You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Zoltán Borók-Nagy (Jira)" <ji...@apache.org> on 2020/01/10 18:10:00 UTC

[jira] [Resolved] (IMPALA-9277) Crash due to unhandled exception thrown from orc::ColumnSelector::updateSelectedByTypeId

     [ https://issues.apache.org/jira/browse/IMPALA-9277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Zoltán Borók-Nagy resolved IMPALA-9277.
---------------------------------------
    Fix Version/s: Impala 3.4.0
       Resolution: Fixed

> Crash due to unhandled exception thrown from orc::ColumnSelector::updateSelectedByTypeId
> ----------------------------------------------------------------------------------------
>
>                 Key: IMPALA-9277
>                 URL: https://issues.apache.org/jira/browse/IMPALA-9277
>             Project: IMPALA
>          Issue Type: Bug
>            Reporter: Quanlong Huang
>            Assignee: Zoltán Borók-Nagy
>            Priority: Blocker
>             Fix For: Impala 3.4.0
>
>         Attachments: copy7_nullable.orc
>
>
> Build latest Impala with latest ORC lib and run test_fuzz_scanner for ORC format:
>  * Impala git hash: 497a17dbdc0669abd47c2360b8ca94de8b54d413
>  * ORC git hash: c26ff4c351d7c34c4272442a6874703f510282a8
> Found the crash:
> {code:java}
> Operating system: Linux
>                   0.0.0 Linux 4.15.0-72-generic #81~16.04.1-Ubuntu SMP Tue Nov 26 16:34:21 UTC 2019 x86_64
> CPU: amd64
>      family 6 model 158 stepping 10
>      1 CPU
> GPU: UNKNOWN
> Crash reason:  SIGABRT
> Crash address: 0x3e8000048f0
> Process uptime: not available
> Thread 319 (crashed)
>  0  libc-2.23.so + 0x35428
>  1  libc-2.23.so + 0x3702a
>  2  impalad!_fini + 0x15bae90
>  3  libc-2.23.so + 0x79242
>  4  libc-2.23.so + 0x79242
>  5  libstdc++.so.6.0.21 + 0x8c880
>  6  libstdc++.so.6.0.21 + 0x8f84d
>  7  impalad!_fini + 0x15baeb0
>  8  impalad + 0x4b984e0
>  9  libstdc++.so.6.0.21 + 0x8d6b6
> 10  libstdc++.so.6.0.21 + 0x8d701
> 11  libstdc++.so.6.0.21 + 0x8d919
> 12  impalad!orc::ColumnSelector::updateSelectedByTypeId(std::vector<bool, std::allocator<bool> >&, unsigned long) [Reader.cc : 166 + 0x12]
> 13  impalad!orc::ColumnSelector::updateSelected(std::vector<bool, std::allocator<bool> >&, orc::RowReaderOptions const&) [Reader.cc : 136 + 0xf]
> 14  impalad!orc::RowReaderImpl::RowReaderImpl(std::shared_ptr<orc::FileContents>, orc::RowReaderOptions const&) [Reader.cc : 229 + 0x11]
> 15  impalad!orc::ReaderImpl::createRowReader(orc::RowReaderOptions const&) const [Reader.cc : 725 + 0x1b]
> 16  impalad!impala::HdfsOrcScanner::Open(impala::ScannerContext*) [hdfs-orc-scanner.cc : 198 + 0x3c]
> 17  impalad!impala::HdfsScanNodeBase::CreateAndOpenScannerHelper(impala::HdfsPartitionDescriptor*, impala::ScannerContext*, boost::scoped_ptr<impala::HdfsScanner>*) [hdfs-scan-node-base.cc : 819 + 0x29]
> 18  impalad!impala::HdfsScanNode::ProcessSplit(std::vector<impala::FilterContext, std::allocator<impala::FilterContext> > const&, impala::MemPool*, impala::io::ScanRange*, long*) [hdfs-scan-node.cc : 494 + 0x2b]
> 19  impalad!impala::HdfsScanNode::ScannerThread(bool, long) [hdfs-scan-node.cc : 416 + 0x2a]
> 20  impalad!impala::HdfsScanNode::ThreadTokenAvailableCb(impala::ThreadResourcePool*)::{lambda()#1}::operator()() const + 0x30
> 21  impalad!boost::detail::function::void_function_obj_invoker0<impala::HdfsScanNode::ThreadTokenAvailableCb(impala::ThreadResourcePool*)::<lambda()>, void>::invoke [function_template.hpp : 153 + 0xc]
> 22  impalad!boost::function0<void>::operator()() const [function_template.hpp : 767 + 0x11]
> 23  impalad!impala::Thread::SuperviseThread(std::string const&, std::string const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*) [thread.cc : 360 + 0xf]
> 24  impalad!void boost::_bi::list5<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> >::operator()<void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(std::string const&, std::string const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list0&, int) [bind.hpp : 525 + 0x15]
> 25  impalad!boost::_bi::bind_t<void, void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > >::operator()() [bind_template.hpp : 20 + 0x22]
> 26  impalad!boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > > >::run() [thread.hpp : 116 + 0x12]
> 27  impalad!thread_proxy + 0xda
> 28  libpthread-2.23.so + 0x76ba
> 29  libc-2.23.so + 0x10741d
> {code}
> Code snipper for orc Reader.cc:166
> {code:c++}
> 158  void ColumnSelector::updateSelectedByTypeId(std::vector<bool>& selectedColumns, uint64_t typeId) {
> 159    if (typeId < selectedColumns.size()) {
> 160      const Type& type = *idTypeMap[typeId];
> 161      selectChildren(selectedColumns, type);
> 162    } else {
> 163      std::stringstream buffer;
> 164      buffer << "Invalid type id selected " << typeId << " out of "
> 165             << selectedColumns.size();
> 166      throw ParseError(buffer.str());
> 167    }
> 168  }
> {code}
> Code snipper for impala hdfs-orc-scanner.cc:198
> {code:c++}
> 197  unique_ptr<orc::RowReader> tmp_row_reader =
> 198      reader_->createRowReader(row_reader_options_);
> 199  const orc::Type* root_type = &tmp_row_reader->getSelectedType();
> 200  DCHECK_EQ(root_type->getKind(), orc::TypeKind::STRUCT);
> 201  orc_root_reader_ = this->obj_pool_.Add(
> 202      new OrcStructReader(root_type, scan_node_->tuple_desc(), this));
> {code}
> *How to reproduce*
>  The query is
> {code:sql}
> select count(*) from test_fuzz_nested_types_4f03937d.complextypestbl q{code}
> CreateTable DDL:
> {code:sql}
> CREATE TABLE test_fuzz_nested_types_4f03937d.complextypestbl (
>   id BIGINT,
>   int_array ARRAY<INT>,
>   int_array_array ARRAY<ARRAY<INT>>,
>   int_map MAP<STRING,INT>,
>   int_map_array ARRAY<MAP<STRING,INT>>,
>   nested_struct STRUCT<a:INT,b:ARRAY<INT>,c:STRUCT<d:ARRAY<ARRAY<STRUCT<e:INT,f:STRING>>>>,g:MAP<STRING,STRUCT<h:STRUCT<i:ARRAY<DOUBLE>>>>>
> )
> STORED AS ORC
> {code}
> Attached the malformed orc file



--
This message was sent by Atlassian Jira
(v8.3.4#803005)