Skip to content

[Bug] ColumnDictionary<int>::Dictionary::convert_code cause BE coredump #11966

@jacktengg

Description

@jacktengg

Search before asking

  • I had searched in the issues and found no similar issues.

Version

master 0c5b4ec

What's Wrong?

be coredump:

*** Aborted at 1660976877 (unix time) try "date -d @1660976877" if you are using GNU date ***
*** SIGSEGV address not mapped to object (@0x83) received by PID 217972 (TID 0x7f4ff7f34700) from PID 131; stack trace: ***
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk/tengjianping/doris-test/be/src/common/signal_handler.h:420
 1# 0x00007F500D06D400 in /lib64/libc.so.6
 2# doris::vectorized::ColumnDictionary<int>::Dictionary::convert_code(int const&) const at /mnt/disk/tengjianping/doris-test/be/src/vec/columns/column_dictionary.h:400
 3# doris::vectorized::ColumnDictionary<int>::convert_dict_codes_if_necessary() at /mnt/disk/tengjianping/doris-test/be/src/vec/columns/column_dictionary.h:242
 4# doris::vectorized::ColumnNullable::convert_dict_codes_if_necessary() at /mnt/disk/tengjianping/doris-test/be/src/vec/columns/column_nullable.h:279
 5# doris::segment_v2::SegmentIterator::_evaluate_short_circuit_predicate(unsigned short*, unsigned short*) at /mnt/disk/tengjianping/doris-test/be/src/olap/rowset/segment_v2/segment_iterator.cpp:877
 6# doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/olap/rowset/segment_v2/segment_iterator.cpp:984
 7# doris::BetaRowsetReader::next_block(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/olap/rowset/beta_rowset_reader.cpp:196
 8# doris::vectorized::VCollectIterator::Level0Iterator::next(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/vcollect_iterator.cpp:230
 9# doris::vectorized::VCollectIterator::Level1Iterator::_normal_next(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/vcollect_iterator.cpp:389
10# doris::vectorized::VCollectIterator::Level1Iterator::_normal_next(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/vcollect_iterator.cpp:398
11# doris::vectorized::VCollectIterator::Level1Iterator::next(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/vcollect_iterator.cpp:287
12# doris::vectorized::VCollectIterator::next(doris::vectorized::Block*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/vcollect_iterator.cpp:172
13# doris::vectorized::BlockReader::_direct_next_block(doris::vectorized::Block*, doris::MemPool*, doris::ObjectPool*, bool*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/block_reader.cpp:176
14# doris::vectorized::BlockReader::next_block_with_aggregation(doris::vectorized::Block*, doris::MemPool*, doris::ObjectPool*, bool*) at /mnt/disk/tengjianping/doris-test/be/src/vec/olap/block_reader.h:50
15# doris::vectorized::VOlapScanner::get_block(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk/tengjianping/doris-test/be/src/vec/exec/volap_scanner.cpp:52
16# doris::vectorized::VOlapScanNode::scanner_thread(doris::vectorized::VOlapScanner*) at /mnt/disk/tengjianping/doris-test/be/src/vec/exec/volap_scan_node.cpp:214
17# void std::__invoke_impl<void, void (doris::vectorized::VOlapScanNode::*&)(doris::vectorized::VOlapScanner*), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&>(std::__invoke_memfun_deref, void (doris::vectorized::VOlapScanNode::*&)(doris::vectorized::VOlapScanner*), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/invoke.h:74
18# std::__invoke_result<void (doris::vectorized::VOlapScanNode::*&)(doris::vectorized::VOlapScanner*), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&>::type std::__invoke<void (doris::vectorized::VOlapScanNode::*&)(doris::vectorized::VOlapScanner*), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&>(void (doris::vectorized::VOlapScanNode::*&)(doris::vectorized::VOlapScanner*), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/invoke.h:97
19# void std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/functional:422
20# void std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>::operator()<, void>() at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/functional:505
21# void std::__invoke_impl<void, std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&>(std::__invoke_other, std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/invoke.h:61
22# std::enable_if<is_invocable_r_v<void, std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&>, void>::type std::__invoke_r<void, std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&>(std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/invoke.h:117
23# std::_Function_handler<void (), std::_Bind<void (doris::vectorized::VOlapScanNode::*(doris::vectorized::VOlapScanNode*, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)> >::_M_invoke(std::_Any_data const&) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/std_function.h:292
24# std::function<void ()>::operator()() const at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/std_function.h:560
25# doris::PriorityWorkStealingThreadPool::work_thread(int) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
26# void std::__invoke_impl<void, void (doris::PriorityWorkStealingThreadPool::* const&)(int), doris::PriorityWorkStealingThreadPool*&, int&>(std::__invoke_memfun_deref, void (doris::PriorityWorkStealingThreadPool::* const&)(int), doris::PriorityWorkStealingThreadPool*&, int&) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
27# std::__invoke_result<void (doris::PriorityWorkStealingThreadPool::* const&)(int), doris::PriorityWorkStealingThreadPool*&, int&>::type std::__invoke<void (doris::PriorityWorkStealingThreadPool::* const&)(int), doris::PriorityWorkStealingThreadPool*&, int&>(void (doris::PriorityWorkStealingThreadPool::* const&)(int), doris::PriorityWorkStealingThreadPool*&, int&) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
28# decltype (__invoke((*this)._M_pmf, (forward<doris::PriorityWorkStealingThreadPool*&>)({parm#1}), (forward<int&>)({parm#1}))) std::_Mem_fn_base<void (doris::PriorityWorkStealingThreadPool::*)(int), true>::operator()<doris::PriorityWorkStealingThreadPool*&, int&>(doris::PriorityWorkStealingThreadPool*&, int&) const in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
29# void std::__invoke_impl<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)>&, doris::PriorityWorkStealingThreadPool*&, int&>(std::__invoke_other, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)>&, doris::PriorityWorkStealingThreadPool*&, int&) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
30# std::enable_if<is_invocable_r_v<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)>&, doris::PriorityWorkStealingThreadPool*&, int&>, void>::type std::__invoke_r<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)>&, doris::PriorityWorkStealingThreadPool*&, int&>(std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)>&, doris::PriorityWorkStealingThreadPool*&, int&) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
31# void std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
32# void std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>::operator()<>() in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
33# void std::__invoke_impl<void, std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>>(std::__invoke_other, std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>&&) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
34# std::__invoke_result<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>>::type std::__invoke<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>>(std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)>&&) in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
35# void std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/std_thread.h:253
36# std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)> > >::operator()() at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/std_thread.h:260
37# std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::*)(int)> (doris::PriorityWorkStealingThreadPool*, int)> > > >::_M_run() at /mnt/disk/tengjianping/local/ldb_toolchain/include/c++/11/bits/std_thread.h:211
38# execute_native_thread_routine in /mnt/disk/tengjianping/doris-test/output/be/lib/doris_be
39# start_thread in /lib64/libpthread.so.0
40# clone in /lib64/libc.so.6

What You Expected?

query OK

How to Reproduce?

CREATE TABLE t1  (
        `a` int,
        `b` char(10)
        ) ENGINE=OLAP
        DUPLICATE KEY(`a`)
        DISTRIBUTED BY HASH(`a`) BUCKETS 4
        PROPERTIES (
        "replication_allocation" = "tag.location.default: 1",
        "in_memory" = "false",
        "storage_format" = "V2"
        );
insert into t1 values (1, 'a'), (2, null), (3, 'c'), (4, 'd');
select * from t1 WHERE b > 'c';

Anything Else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions