You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Alexander Behm (JIRA)" <ji...@apache.org> on 2017/04/14 04:32:41 UTC
[jira] [Resolved] (IMPALA-5186) stress test caused crash in
HdfsParquetScanner::Close()
[ https://issues.apache.org/jira/browse/IMPALA-5186?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Behm resolved IMPALA-5186.
------------------------------------
Resolution: Fixed
Fix Version/s: Impala 2.9.0
commit 491154c8ef7a9b6b1be2430c1bf119e21ce171c3
Author: Alex Behm <al...@cloudera.com>
Date: Mon Apr 10 23:31:08 2017 -0700
IMPALA-5186: Handle failed CreateAndOpenScanner() in MT scan.
The bug was that a failed CreateAndOpenScanner() could cause
a scanner to be closed twice leading to freed memory being
accessed. The fix is straightforward.
Testing:
- I cleaned up test_failpoints.py and added an MT_DOP test
dimension to cover this bug.
- Core tests passed.
Change-Id: I777c9b8ef2eb5b556c9b145d231c543b3b8ae270
Reviewed-on: http://gerrit.cloudera.org:8080/6618
Reviewed-by: Alex Behm <al...@cloudera.com>
Tested-by: Impala Public Jenkins
> stress test caused crash in HdfsParquetScanner::Close()
> -------------------------------------------------------
>
> Key: IMPALA-5186
> URL: https://issues.apache.org/jira/browse/IMPALA-5186
> Project: IMPALA
> Issue Type: Bug
> Components: Backend
> Affects Versions: Impala 2.9.0
> Reporter: Michael Brown
> Assignee: Alexander Behm
> Priority: Blocker
> Labels: broken-build, crash, stress
> Fix For: Impala 2.9.0
>
>
> A stress test at commit {{IMPALA-5154: Handle 'unpartitioned' Kudu tables}} caused a crash. Here is the backtrace:
> {noformat}
> #0 0x000000323f632625 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1 0x000000323f633e05 in abort () at abort.c:92
> #2 0x00007fe3aa44ca55 in os::abort(bool) () from /usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/server/libjvm.so
> #3 0x00007fe3aa5ccf87 in VMError::report_and_die() () from /usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/server/libjvm.so
> #4 0x00007fe3aa45196f in JVM_handle_linux_signal () from /usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/server/libjvm.so
> #5 <signal handler called>
> #6 0x0000000001723845 in impala::HdfsParquetScanner::Close (this=0x7fdc12b96680, row_batch=0x0)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/exec/hdfs-parquet-scanner.cc:280
> #7 0x00000000016f8ceb in impala::HdfsScanNodeMt::Close (this=0x7fe0b8c1f600, state=0x7fe0c724f100)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/exec/hdfs-scan-node-mt.cc:123
> #8 0x00000000016a981a in impala::ExecNode::Close (this=0x1149a83c0, state=0x7fe0c724f100) at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/exec/exec-node.cc:198
> #9 0x00000000017a5233 in impala::PartitionedAggregationNode::Close (this=0x1149a83c0, state=0x7fe0c724f100)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/exec/partitioned-aggregation-node.cc:726
> #10 0x0000000001a752e9 in impala::PlanFragmentExecutor::Close (this=0x7fe235a95ad0)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/runtime/plan-fragment-executor.cc:501
> #11 0x0000000001a6cdb5 in impala::FragmentInstanceState::Exec (this=0x7fe235a95800)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/runtime/fragment-instance-state.cc:71
> #12 0x0000000001a783e9 in impala::QueryExecMgr::ExecFInstance (this=0xe138100, fis=0x7fe235a95800)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/runtime/query-exec-mgr.cc:110
> #13 0x0000000001a7b212 in boost::_mfi::mf1<void, impala::QueryExecMgr, impala::FragmentInstanceState*>::operator() (this=0x7fddb52eefa0, p=0xe138100, a1=0x7fe235a95800)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/bind/mem_fn_template.hpp:165
> #14 0x0000000001a7b09b in boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, boost::_bi::value<impala::FragmentInstanceState*> >::operator()<boost::_mfi::mf1<void, impala::QueryExecMgr, impala::FragmentInstanceState*>, boost::_bi::list0> (this=0x7fddb52eefb0, f=..., a=...)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/bind/bind.hpp:313
> #15 0x0000000001a7abcf in boost::_bi::bind_t<void, boost::_mfi::mf1<void, impala::QueryExecMgr, impala::FragmentInstanceState*>, boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, boost::_bi::value<impala::FragmentInstanceState*> > >::operator() (this=0x7fddb52eefa0)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/bind/bind_template.hpp:20
> #16 0x0000000001a7a7da in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, impala::QueryExecMgr, impala::FragmentInstanceState*>, boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, boost::_bi::value<impala::FragmentInstanceState*> > >, void>::invoke (function_obj_ptr=...)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/function/function_template.hpp:153
> #17 0x000000000137bd66 in boost::function0<void>::operator() (this=0x7fe13b699c40)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/function/function_template.hpp:767
> #18 0x000000000162e35d in impala::Thread::SuperviseThread (name=..., category=..., functor=..., thread_started=0x7fd9fa94e9a0)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/be/src/util/thread.cc:325
> #19 0x0000000001636d38 in boost::_bi::list4<boost::_bi::value<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void()> >, boost::_bi::value<impala::Promise<long int>*> >::operator()<void (*)(const std::basic_string<char>&, const std::basic_string<char>&, boost::function<void()>, impala::Promise<long int>*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &, boost::function<void()>, impala::Promise<long> *), boost::_bi::list0 &, int) (this=0x1d6f83dc0, f=@0x1d6f83db8, a=...)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/bind/bind.hpp:457
> #20 0x0000000001636c7b in boost::_bi::bind_t<void, void (*)(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::function<void()>, impala::Promise<long int>*), boost::_bi::list4<boost::_bi::value<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void()> >, boost::_bi::value<impala::Promise<long int>*> > >::operator()(void) (this=0x1d6f83db8)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/bind/bind_template.hpp:20
> #21 0x0000000001636c3e in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::function<void()>, impala::Promise<long int>*), boost::_bi::list4<boost::_bi::value<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void()> >, boost::_bi::value<impala::Promise<long int>*> > > >::run(void) (this=0x1d6f83c00)
> at /usr/src/debug/impala-2.8.0-cdh5.12.0-SNAPSHOT/toolchain/boost-1.57.0-p1/include/boost/thread/detail/thread.hpp:116
> #22 0x0000000001af270a in thread_proxy ()
> #23 0x000000323fa079d1 in start_thread (arg=0x7fe13b69a700) at pthread_create.c:301
> #24 0x000000323f6e88fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
> {noformat}
> L280 looks like this:
> {noformat}
> 269 void HdfsParquetScanner::Close(RowBatch* row_batch) {
> ...
> 280 for (ParquetColumnReader* col_reader : column_readers_) col_reader->Close(nullptr);
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)