You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2021/11/11 07:44:00 UTC

[jira] [Commented] (IMPALA-11011) Impala crashes in OrcStructReader::NumElements()

    [ https://issues.apache.org/jira/browse/IMPALA-11011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17442128#comment-17442128 ] 

ASF subversion and git services commented on IMPALA-11011:
----------------------------------------------------------

Commit cb0018e679f4b48e98d20590679bcd157ef36ee2 in impala's branch refs/heads/master from Daniel Becker
[ https://gitbox.apache.org/repos/asf?p=impala.git;h=cb0018e ]

IMPALA-11011: Impala crashes in OrcStructReader::NumElements()

Running the query

select inner_arr.ITEM
from functional_orc_def.complextypestbl_non_transactional.nested_struct.c.d.ITEM
as inner_arr;

crashes Impala because in OrcStructReader::NumElements() 'vbatch_' is
NULL and we dereference it.

This commit adds a NULL check and if 'vbatch_' is NULL, NumElements()
returns 0.

Testing:
  - added a regression test in
    'testdata/workloads/functional-query/queries/QueryTest/struct-in-select-list.test'
    that runs the above query.

Change-Id: I19cea7afdd1b3542a20a81b9f212fa320f3c1427
Reviewed-on: http://gerrit.cloudera.org:8080/18007
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>


> Impala crashes in OrcStructReader::NumElements()
> ------------------------------------------------
>
>                 Key: IMPALA-11011
>                 URL: https://issues.apache.org/jira/browse/IMPALA-11011
>             Project: IMPALA
>          Issue Type: Bug
>            Reporter: Daniel Becker
>            Assignee: Daniel Becker
>            Priority: Major
>
> Running the query
> {code:java}
> select inner_arr.ITEM
> from functional_orc_def.complextypestbl.nested_struct.c.d.ITEM as inner_arr;{code}
> {{in a non-full-acid version/copy of functional_orc_def.complextypestbl crashes Impala because in OrcStructReader::NumElements() 'vbatch_' is NULL and we dereference it.}}
> {{Steps to reproduce:}}
> {{1. Use Hive to create a non-full-acid copy of the table:}}
>  * Enter the Hive cmd line:
> {code:java}
> hive beeline -u 'jdbc:hive2://localhost:11050/default'{code}
>  * Copy the table with this command:
> {code:java}
> create table complextypestbl_non_acid stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only") as select * from complextypestbl;{code}
> 2.  In Impala, run the query on the copied table:
> {code:java}
> set disable_codegen=true;
> select inner_arr.ITEM
> from functional_orc_def.complextypestbl_non_acid.nested_struct.c.d.ITEM as inner_arr;{code}
>  
> Call stack from GDB:
> {code:java}
> #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
> #1  0x00007fd5e49e9921 in __GI_abort () at abort.c:79
> #2  0x00007fd5e7929589 in os::abort(bool) () from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
> #3  0x00007fd5e7b04fb3 in VMError::report_and_die() () from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
> #4  0x00007fd5e7933ce4 in JVM_handle_linux_signal () from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
> #5  0x00007fd5e79263b8 in signalHandler(int, siginfo_t*, void*) () from /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
> #6  <signal handler called>
> #7  0x0000000002c3bd7f in impala::OrcStructReader::NumElements (this=0xf043290) at be/src/exec/orc-column-readers.h:603
> #8  0x0000000002c371b7 in impala::OrcListReader::NumElements (this=0x11009420) at be/src/exec/orc-column-readers.cc:563
> #9  0x0000000002c371b7 in impala::OrcListReader::NumElements (this=0x11009340) at be/src/exec/orc-column-readers.cc:563
> #10 0x0000000002c3be5b in impala::OrcStructReader::NumElements (this=0xf043200) at be/src/exec/orc-column-readers.h:606
> #11 0x0000000002c3be5b in impala::OrcStructReader::NumElements (this=0xf042ea0) at be/src/exec/orc-column-readers.h:606
> #12 0x0000000002c3be5b in impala::OrcStructReader::NumElements (this=0xf042e10) at be/src/exec/orc-column-readers.h:606
> #13 0x0000000002c3497f in impala::OrcStructReader::EndOfBatch (this=0xf042e10) at be/src/exec/orc-column-readers.cc:294
> #14 0x0000000002bf5389 in impala::HdfsOrcScanner::GetNextInternal (this=0xeca4000, row_batch=0xf1c95a0) at be/src/exec/hdfs-orc-scanner.cc:648
> #15 0x0000000002bf46b7 in impala::HdfsOrcScanner::ProcessSplit (this=0xeca4000) at be/src/exec/hdfs-orc-scanner.cc:588
> #16 0x0000000002d427ff in impala::HdfsScanNode::ProcessSplit (this=0xff85800, filter_ctxs=..., expr_results_pool=0x7fd41a29b4e0, scan_range=0xf2bde00, scanner_thread_reservation=0x7fd41a29b408) at be/src/exec/hdfs-scan-node.cc:500
> #17 0x0000000002d41b80 in impala::HdfsScanNode::ScannerThread (this=0xff85800, first_thread=false, scanner_thread_reservation=16384) at be/src/exec/hdfs-scan-node.cc:418
> #18 0x0000000002d40ee8 in impala::HdfsScanNode::<lambda()>::operator()(void) const (__closure=0x7fd41a29bc08) at be/src/exec/hdfs-scan-node.cc:339
> #19 0x0000000002d43afb in boost::detail::function::void_function_obj_invoker0<impala::HdfsScanNode::ThreadTokenAvailableCb(impala::ThreadResourcePool*)::<lambda()>, void>::invoke(boost::detail::function::function_buffer &) (function_obj_ptr=...)
>     at /opt/Impala-Toolchain/toolchain-packages-gcc7.5.0/boost-1.61.0-p2/include/boost/function/function_template.hpp:159
> #20 0x00000000022de8ca in boost::function0<void>::operator() (this=0x7fd41a29bc00) at /opt/Impala-Toolchain/toolchain-packages-gcc7.5.0/boost-1.61.0-p2/include/boost/function/function_template.hpp:770
> #21 0x0000000002aa43a0 in impala::Thread::SuperviseThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*) (name=..., category=..., functor=..., parent_thread_info=0x7fd40f8858a0, thread_started=0x7fd40f8846a0) at be/src/util/thread.cc:360
> #22 0x0000000002aacd01 in boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> >::operator()<void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list0&, int) (this=0xf233f00, 
>     f=@0xf233ef8: 0x2aa405a <impala::Thread::SuperviseThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*)>, a=...) at /opt/Impala-Toolchain/toolchain-packages-gcc7.5.0/boost-1.61.0-p2/include/boost/bind/bind.hpp:531
> #23 0x0000000002aacc25 in boost::_bi::bind_t<void, void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > >::operator()() (this=0xf233ef8)
>     at /opt/Impala-Toolchain/toolchain-packages-gcc7.5.0/boost-1.61.0-p2/include/boost/bind/bind.hpp:1222
> #24 0x0000000002aacbe6 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > > >::run() (this=0xf233d40)
>     at /opt/Impala-Toolchain/toolchain-packages-gcc7.5.0/boost-1.61.0-p2/include/boost/thread/detail/thread.hpp:116
> #25 0x000000000434e6b2 in thread_proxy ()
> #26 0x00007fd5e821b6db in start_thread (arg=0x7fd41a29c700) at pthread_create.c:463
> #27 0x00007fd5e4aca71f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95{code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org