Zoltán Borók-Nagy created IMPALA-8969:
-----------------------------------------

             Summary: Grouping aggregator can cause segmentation fault when 
doing multiple aggregations.
                 Key: IMPALA-8969
                 URL: https://issues.apache.org/jira/browse/IMPALA-8969
             Project: IMPALA
          Issue Type: Bug
            Reporter: Zoltán Borók-Nagy


The following query deterministically crashes Impala:
{noformat}
select group_concat(distinct cast(l_orderkey as string))), 
group_concat(distinct(l_comment))) from tpch_parquet.lineitem group by 
l_comment{noformat}
The stack trace during the crash:
{noformat}
#0 0x00007fd3f605a428 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 
0x00007fd3f605c02a in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 
0x00007fd3fa8ad149 in ?? () from 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so #3 
0x00007fd3faa60d27 in ?? () from 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so #4 
0x00007fd3fa8b6e4f in JVM_handle_linux_signal () from 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so #5 
0x00007fd3fa8a9e48 in ?? () from 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so #6 <signal 
handler called> #7 0x00007fd400105bfa in impala::Tuple::IsNull (this=0x0, 
offset=...) at /home/boroknagyz/Impala/be/src/runtime/tuple.h:247 #8 
0x00007fd3fd1c16d2 in impala::AggFnEvaluator::SerializeOrFinalize 
(this=0x75da4c0, src=0x0, dst_slot_desc=..., dst=0x0, fn=0x7fd3fd1cdc08 
<impala::AggregateFunctions::StringValSerializeOrFinalize(impala_udf::FunctionContext*,
 impala_udf::StringVal const&)>) at 
/home/boroknagyz/Impala/be/src/exprs/agg-fn-evaluator.cc:398 #9 
0x00007fd3fddbeb3a in impala::AggFnEvaluator::Serialize (this=0x75da4c0, 
tuple=0x0) at /home/boroknagyz/Impala/be/src/exprs/agg-fn-evaluator.h:267 #10 
0x00007fd3fddbebe3 in impala::AggFnEvaluator::Serialize (evals=..., dst=0x0) at 
/home/boroknagyz/Impala/be/src/exprs/agg-fn-evaluator.h:296 #11 
0x00007fd3fde4e847 in impala::GroupingAggregator::AddBatchStreamingImpl 
(this=0xd392300, agg_idx=1, needs_serialize=true, 
prefetch_mode=impala::TPrefetchMode::HT_BUCKET, in_batch=0xb7746c0, 
out_batch=0x758e040, ht_ctx=0xb336f80, remaining_capacity=0x7fd353bb6c40) at 
/home/boroknagyz/Impala/be/src/exec/grouping-aggregator-ir.cc:204 #12 
0x00007fd3fde3e426 in impala::GroupingAggregator::AddBatchStreaming 
(this=0xd392300, state=0x7006e00, out_batch=0x758e040, child_batch=0xb7746c0, 
eos=0x7fd353bb6f0e) at 
/home/boroknagyz/Impala/be/src/exec/grouping-aggregator.cc:459 #13 
0x00007fd3fdfa2773 in impala::StreamingAggregationNode::GetRowsStreaming 
(this=0x6205c00, state=0x7006e00, out_batch=0x758e040) at 
/home/boroknagyz/Impala/be/src/exec/streaming-aggregation-node.cc:160 #14 
0x00007fd3fdfa1616 in impala::StreamingAggregationNode::GetNext 
(this=0x6205c00, state=0x7006e00, row_batch=0x758e040, eos=0x7fd353bb74c7) at 
/home/boroknagyz/Impala/be/src/exec/streaming-aggregation-node.cc:76 #15 
0x00007fd3fe9ea566 in impala::FragmentInstanceState::ExecInternal 
(this=0x703b1e0) at 
/home/boroknagyz/Impala/be/src/runtime/fragment-instance-state.cc:368 #16 
0x00007fd3fe9e6e39 in impala::FragmentInstanceState::Exec (this=0x703b1e0) at 
/home/boroknagyz/Impala/be/src/runtime/fragment-instance-state.cc:93 #17 
0x00007fd3fea51c9d in impala::QueryState::ExecFInstance (this=0x6f9b200, 
fis=0x703b1e0) at /home/boroknagyz/Impala/be/src/runtime/query-state.cc:650 #18 
0x00007fd3fea4ff6a in impala::QueryState::<lambda()>::operator()(void) const 
(__closure=0x7fd353bb7ca8) at 
/home/boroknagyz/Impala/be/src/runtime/query-state.cc:558 #19 
0x00007fd3fea5397f in 
boost::detail::function::void_function_obj_invoker0<impala::QueryState::StartFInstances()::<lambda()>,
 void>::invoke(boost::detail::function::function_buffer &) 
(function_obj_ptr=...) at 
/opt/Impala-Toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:153
 #20 0x00007fd4005266f4 in boost::function0<void>::operator() 
(this=0x7fd353bb7ca0) at 
/opt/Impala-Toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:767
 #21 0x00007fd40020a44f in impala::Thread::SuperviseThread(std::string const&, 
std::string const&, boost::function<void ()>, impala::ThreadDebugInfo const*, 
impala::Promise<long, (impala::PromiseMode)0>*) (name=..., category=..., 
functor=..., parent_thread_info=0x7fd354bbb950, thread_started=0x7fd354bba8f0) 
at /home/boroknagyz/Impala/be/src/util/thread.cc:360 #22 0x00007fd400213e13 in 
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) (this=0x739f1c0, 
f=@0x739f1b8: 0x7fd40020a0e8 <impala::Thread::SuperviseThread(std::string 
const&, std::string const&, boost::function<void ()>, impala::ThreadDebugInfo 
const*, impala::Promise<long, (impala::PromiseMode)0>*)>, a=...) at 
/opt/Impala-Toolchain/boost-1.57.0-p3/include/boost/bind/bind.hpp:525 #23 
0x00007fd400213d37 in 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()() (this=0x739f1b8) at 
/opt/Impala-Toolchain/boost-1.57.0-p3/include/boost/bind/bind_template.hpp:20 
#24 0x00007fd400213cfa in 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() 
(this=0x739f000) at 
/opt/Impala-Toolchain/boost-1.57.0-p3/include/boost/thread/detail/thread.hpp:116
 #25 0x0000000000a3bcaa in thread_proxy () #26 0x00007fd3fb60a6ba in 
start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #27 
0x00007fd3f612c41d in clone () from /lib/x86_64-linux-gnu/libc.so.6
{noformat}
The problem is in be/src/exec/grouping-aggregator-ir.cc:204:

 
{noformat}
AggFnEvaluator::Serialize(agg_fn_evals_, out_batch_iter.Get()->GetTuple(0));
{noformat}
GetTuple() should be called with 'agg_idx' instead of zero.



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

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

Reply via email to