LiuYuan created IMPALA-13564:
--------------------------------

             Summary: Exector crash in impala::DecodeValue<impala::StringValue> 
when select * from table which has hundreds string column
                 Key: IMPALA-13564
                 URL: https://issues.apache.org/jira/browse/IMPALA-13564
             Project: IMPALA
          Issue Type: Bug
          Components: Backend
    Affects Versions: Impala 4.3.0
            Reporter: LiuYuan


when I select * from the table which has hundreds string column, I got a 
SIGSEGV.

there is a gdb backtrace:
{code:java}
(gdb) bt
#0  0x0000000001e9b90c in impala::DecodeValue<impala::StringValue> 
(decode_error=0x7f3a31d60b04, out_val=0x427ec435, idx=<optimized out>, 
dict_len=17, dict=0x17292780)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/bit-packing.inline.h:295
#1  impala::BitPacking::UnpackAndDecode32Values<impala::StringValue, 5> 
(in=in@entry=0x1cc2b622 "\002\204\001\300", dict=0x17292780, 
dict_len=dict_len@entry=17, out=<optimized out>, stride=stride@entry=7049, 
decode_error=0x7f3a31d60b04, 
    in_bytes=<optimized out>) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/bit-packing.inline.h:356
#2  0x0000000001f5e7c1 in 
impala::BitPacking::UnpackAndDecodeValues<impala::StringValue, 5> 
(decode_error=0x7f3a31d60b04, stride=7049, out=0x42563774, 
num_values=<optimized out>, dict_len=17, dict=0x17292780, in_bytes=<optimized 
out>, 
    in=<optimized out>) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/bit-packing.inline.h:145
#3  impala::BitPacking::UnpackAndDecodeValues<impala::StringValue> 
(bit_width=<optimized out>, in=<optimized out>, in_bytes=12210, 
dict=dict@entry=0x17292780, dict_len=dict_len@entry=17, 
num_values=num_values@entry=480, out=0x42563774, 
    stride=7049, decode_error=0x7f3a31d60b04) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/bit-packing.inline.h:124
#4  0x0000000001f649fd in 
impala::BatchedBitReader::UnpackAndDecodeBatch<impala::StringValue> 
(stride=7049, v=0x42563774, num_values=<optimized out>, dict_len=<optimized 
out>, dict=0x17292780, bit_width=<optimized out>, this=<optimized out>)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/bit-stream-utils.inline.h:199
#5  impala::RleBatchDecoder<unsigned 
int>::DecodeLiteralValues<impala::StringValue> (out=<synthetic pointer>, 
dict_len=<optimized out>, dict=0x17292780, num_literals_to_consume=504, 
this=<optimized out>)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/rle-encoding.h:628
#6  impala::DictDecoder<impala::StringValue>::GetNextValues (count=520, 
stride=7049, first_value=0x42563774, this=0x20391450) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/dict-encoding.h:549
#7  impala::ScalarColumnReader<impala::StringValue, (parquet::Type::type)6, 
true>::DecodeValues<(parquet::Encoding::type)2> (out_vals=0x42563774, 
count=<optimized out>, stride=7049, this=0x20391000)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/parquet-column-readers.cc:858
#8  impala::ScalarColumnReader<impala::StringValue, (parquet::Type::type)6, 
true>::DecodeValues (out_vals=0x42563774, count=<optimized out>, stride=7049, 
this=0x20391000)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/parquet-column-readers.cc:846
#9  impala::ScalarColumnReader<impala::StringValue, (parquet::Type::type)6, 
true>::ReadSlotsNoConversion (this=this@entry=0x20391000, 
num_to_read=<optimized out>, tuple_size=tuple_size@entry=7049, 
tuple_mem=<optimized out>)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/parquet-column-readers.cc:770
#10 0x0000000001f653c1 in impala::ScalarColumnReader<impala::StringValue, 
(parquet::Type::type)6, true>::ReadSlots (tuple_mem=<optimized out>, 
tuple_size=7049, num_to_read=1024, this=0x20391000)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/parquet-column-readers.cc:735
#11 impala::ScalarColumnReader<impala::StringValue, (parquet::Type::type)6, 
true>::MaterializeValueBatchRepeatedDefLevel (this=this@entry=0x20391000, 
max_values=max_values@entry=1024, tuple_size=tuple_size@entry=7049, 
    tuple_mem=tuple_mem@entry=0x42200000 "@\247k\005", 
num_values=num_values@entry=0x7f3a31d60c20) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/parquet-column-readers.cc:663
#12 0x0000000001f65dcc in impala::ScalarColumnReader<impala::StringValue, 
(parquet::Type::type)6, true>::ReadValueBatch<false> (this=0x20391000, 
max_values=1024, tuple_size=7049, tuple_mem=0x42200000 "@\247k\005", 
num_values=0x1f5858d0)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/parquet-column-readers.cc:496
#13 0x0000000001db8f5b in impala::HdfsParquetScanner::FillScratchMicroBatches 
(this=0x1f5ad800, column_readers=..., row_batch=0x20890500, 
skip_row_group=0x1f5ada58, micro_batches=0x1f5adf04, num_micro_batches=1, 
max_num_tuples=595, 
    num_tuples=<optimized out>) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/hdfs-parquet-scanner.cc:2508
#14 0x0000000001dcdf34 in impala::HdfsParquetScanner::AssembleRows<false> 
(this=this@entry=0x1f5ad800, row_batch=row_batch@entry=0x20890500, 
skip_row_group=<optimized out>)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/smart_ptr/scoped_ptr.hpp:103
#15 0x0000000001dcb9d0 in impala::HdfsParquetScanner::GetNextInternal 
(this=0x1f5ad800, row_batch=0x20890500) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/hdfs-parquet-scanner.cc:532
#16 0x0000000001dbc2ae in impala::HdfsParquetScanner::ProcessSplit 
(this=0x1f5ad800) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/parquet/hdfs-parquet-scanner.cc:416
#17 0x0000000001d3cdd6 in impala::HdfsScanNode::ProcessSplit (this=0x18c3e000, 
filter_ctxs=..., expr_results_pool=<optimized out>, scan_range=0x1f04c180, 
scanner_thread_reservation=0x7f3a31d61378)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/hdfs-scan-node.cc:495
#18 0x0000000001d3f41d in impala::HdfsScanNode::ScannerThread (this=0x18c3e000, 
first_thread=false, scanner_thread_reservation=<optimized out>) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/exec/hdfs-scan-node.cc:413
#19 0x0000000001b6bd59 in boost::function0<void>::operator() 
(this=0x7f3a31d619d0) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763
#20 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=0x7f3a3e27e750, thread_started=0x7f3a3e27dd30)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/be/src/util/thread.cc:360
#21 0x0000000001b6cff1 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) (a=<synthetic pointer>..., 
    f=@0x1e5657f8: 0x1b6ba20 
<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>*)>, this=0x1e565800)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:531
#22 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=0x1e5657f8)
    at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294
#23 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=0x1e5656c0) at 
/data/fuxi_ci_workspace/6713819dec1a06263634b15a/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:120
#24 0x000000000242e2c7 in thread_proxy ()
#25 0x00007f3b8717c67a in ?? () from /usr/lib64/libc.so.6
#26 0x00007f3b871ff160 in ?? () from /usr/lib64/libc.so.6
#27 0x0000000000000000 in ?? () {code}
I think there should be passed min(
micro_batches[r].length, scratch_batch_->capacity
) instead of micro_batches[r].length, because micro_batches[r].length is 1024, 
but scratch_batch_->capacity is less than 1024 when row_size is bigger than 4096



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to