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

Alexander Behm resolved IMPALA-6639.
------------------------------------
    Resolution: Duplicate

> Crash with 'ORDER BY' in 'OVER' clause with 'RANDOM'
> ----------------------------------------------------
>
>                 Key: IMPALA-6639
>                 URL: https://issues.apache.org/jira/browse/IMPALA-6639
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Frontend
>    Affects Versions: Impala 3.0, Impala 2.12.0
>            Reporter: Balazs Jeszenszky
>            Priority: Blocker
>              Labels: crash
>
> The following query crashes Impala reliably:
> {code:java}
> select AVG(n) OVER(ORDER By n) from (
> select RANDOM() as n from (select 1 union all select 1) a) b;
> {code}
> Stack trace:
> {code:java}
> #0  0x00007f98565315e5 in raise () from /lib64/libc.so.6
> #1  0x00007f9856532dc5 in abort () from /lib64/libc.so.6
> #2  0x00007f9858697a55 in os::abort(bool) () from 
> /usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/server/libjvm.so
> #3  0x00007f9858817f87 in VMError::report_and_die() ()
>    from /usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/server/libjvm.so
> #4  0x00007f985869c96f in JVM_handle_linux_signal ()
>    from /usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/server/libjvm.so
> #5  <signal handler called>
> #6  0x0000000002c9ed73 in impala::Sorter::Run::Run (this=0x94612a0, 
> parent=0xa396080, sort_tuple_desc=0x8d9a750, 
>     initial_run=true) at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/runtime/sorter.cc:624
> #7  0x0000000002ca5c00 in impala::Sorter::Open (this=0xa396080)
>     at /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/runtime/sorter.cc:1551
> #8  0x0000000002901a09 in impala::SortNode::Open (this=0x945de00, 
> state=0x9d92180)
>     at /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/exec/sort-node.cc:82
> #9  0x0000000002919bcb in impala::AnalyticEvalNode::Open (this=0x6dbb100, 
> state=0x9d92180)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/exec/analytic-eval-node.cc:187
> #10 0x0000000001893d03 in impala::FragmentInstanceState::Open (this=0xae64760)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/runtime/fragment-instance-state.cc:255
> #11 0x00000000018917fd in impala::FragmentInstanceState::Exec (this=0xae64760)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/runtime/fragment-instance-state.cc:80
> #12 0x000000000187a7ac in impala::QueryState::ExecFInstance (this=0x8fd0d00, 
> fis=0xae64760)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/runtime/query-state.cc:382
> #13 0x000000000187906e in impala::QueryState::<lambda()>::operator()(void) 
> const (__closure=0x7f97ffd88bc8)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/runtime/query-state.cc:325
> #14 0x000000000187b3eb in 
> boost::detail::function::void_function_obj_invoker0<impala::QueryState::StartFInstances()::<lambda()>,
>  void>::invoke(boost::detail::function::function_buffer &) 
> (function_obj_ptr=...)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:153
> #15 0x00000000017c88de in boost::function0<void>::operator() 
> (this=0x7f97ffd88bc0)
>     at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:767
> #16 0x0000000001abe113 in impala::Thread::SuperviseThread (name=..., 
> category=..., functor=..., 
>     thread_started=0x7f9800788ab0) at 
> /usr/src/debug/impala-2.11.0-cdh5.14.0/be/src/util/thread.cc:352
> #17 0x0000000001ac6c9e in 
> boost::_bi::list4<boost::_bi::value<std::basic_string<char, 
> std::char_traits<char>, std::allocator<char> > >, 
> boost::_bi::value<std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> > >, boost::_bi::value<boost::function<void()> >, 
> boost::_bi::value<impala::Promise<long int>*> >::operator()<void (*)(const 
> std::basic_string<char>&, const std::basic_string<char>&, 
> boost::function<void()>, impala::Promise<long int>*), 
> boost::_bi::list0>(boost::_bi::type<void>, void (*&)(const 
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > &, 
> const std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
> &, boost::function<void()>, impala::Promise<long> *), boost::_bi::list0 &, 
> int) (this=0xa3901c0, f=@0xa3901b8, a=...)
> {code}
> sort_tuple_size_ ends up as zero in this division:
> https://github.com/cloudera/Impala/blob/cdh5-2.11.0_5.14.0/be/src/runtime/sorter.cc#L624
> Looks like the tuple descriptor is malformed:
> {code:java}
> (gdb) p  *(impala::TupleDescriptor *) sort_tuple_desc
> $4 = {static LLVM_CLASS_NAME = 0x3d649c4 "class.impala::TupleDescriptor", id_ 
> = 8, table_desc_ = 0x0, 
>   byte_size_ = 0, num_null_bytes_ = 0, null_bytes_offset_ = 0, 
>   slots_ = {<std::_Vector_base<impala::SlotDescriptor*, 
> std::allocator<impala::SlotDescriptor*> >> = {
>       _M_impl = {<std::allocator<impala::SlotDescriptor*>> = 
> {<__gnu_cxx::new_allocator<impala::SlotDescriptor*>> = {<No data fields>}, 
> <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 
> 0x0}}, <No data fields>}, 
>   string_slots_ = {<std::_Vector_base<impala::SlotDescriptor*, 
> std::allocator<impala::SlotDescriptor*> >> = {
>       _M_impl = {<std::allocator<impala::SlotDescriptor*>> = 
> {<__gnu_cxx::new_allocator<impala::SlotDescriptor*>> = {<No data fields>}, 
> <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 
> 0x0}}, <No data fields>}, 
>   collection_slots_ = {<std::_Vector_base<impala::SlotDescriptor*, 
> std::allocator<impala::SlotDescriptor*> >> = {
>       _M_impl = {<std::allocator<impala::SlotDescriptor*>> = 
> {<__gnu_cxx::new_allocator<impala::SlotDescriptor*>> = {<No data fields>}, 
> <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 
> 0x0}}, <No data fields>}, 
>   has_varlen_slots_ = false, tuple_path_ = {<std::_Vector_base<int, 
> std::allocator<int> >> = {
>       _M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = 
> {<No data fields>}, <No data fields>}, 
>         _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data 
> fields>}}
> {code}
> Seems to only happen with the RANDOM() function combined with the ORDER BY 
> clause within the OVER clause. Having a single row within the innermost 
> select will run successfully (but having a select * from a table will crash).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to