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 2019/09/25 22:31:00 UTC

[jira] [Commented] (IMPALA-8969) Grouping aggregator can cause segmentation fault when doing multiple aggregations.

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

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

Commit ab975c95171bdc0892326133a63e467398d5bbe2 in impala's branch refs/heads/master from Zoltan Borok-Nagy
[ https://gitbox.apache.org/repos/asf?p=impala.git;h=ab975c9 ]

IMPALA-8969: Grouping aggregator can cause segmentation fault when doing multiple aggregations

Grouping aggregator always tried to serialize the 0th tuple regardless
of the aggregation index. This could lead to a segmentation fault
because the 0th tuple might be null.

Testing:
Added a query that triggers the error to multiple-distinct-aggs.test

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


> 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
>            Assignee: Zoltán Borók-Nagy
>            Priority: Major
>
> 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: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org