Commit fca7aff
authored
[fix](olap) A crash caused by an incorrect storage type in the IN predicate (#56309)
### What problem does this PR solve?
```
*** SIGSEGV address not mapped to object (@0x0) received by PID 612357 (TID 618949 OR 0x7bf276d17700) from PID 0; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /root/doris/be/src/common/signal_handler.h:420
1# 0x00007FFA591F7D10 in /lib64/libpthread.so.0
2# doris::vectorized::PredicateColumnType<(doris::PrimitiveType)15>::get_data() const at /root/doris/be/src/vec/columns/predicate_column.h:395
3# void doris::InListPredicateBase<(doris::PrimitiveType)15, (doris::PredicateType)7, doris::StringSet<doris::FixedContainer<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 2ul> > >::_base_evaluate_bit<true, true, false>(doris::vectorized::IColumn const*, doris::vectorized::PODArray<unsigned char, 4096ul, doris::Allocator<false, false, false, doris::DefaultMemoryAllocator, false>, 16ul, 15ul> const*, unsigned short const*, unsigned short, bool*) const at /root/doris/be/src/olap/in_list_predicate.h:526
4# void doris::InListPredicateBase<(doris::PrimitiveType)15, (doris::PredicateType)7, doris::StringSet<doris::FixedContainer<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 2ul> > >::_evaluate_bit<false>(doris::vectorized::IColumn const&, unsigned short const*, unsigned short, bool*) const at /root/doris/be/src/olap/in_list_predicate.h:249
5# doris::InListPredicateBase<(doris::PrimitiveType)15, (doris::PredicateType)7, doris::StringSet<doris::FixedContainer<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 2ul> > >::evaluate_or(doris::vectorized::IColumn const&, unsigned short const*, unsigned short, bool*) const at /root/doris/be/src/olap/in_list_predicate.h:272
6# doris::SingleColumnBlockPredicate::evaluate_or(std::vector<doris::COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>, std::allocator<doris::COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn> > >&, unsigned short*, unsigned short, bool*) const at /root/doris/be/src/olap/block_column_predicate.cpp:65
7# doris::OrBlockColumnPredicate::evaluate(std::vector<doris::COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>, std::allocator<doris::COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn> > >&, unsigned short*, unsigned short) const at /root/doris/be/src/olap/block_column_predicate.cpp:92
8# doris::AndBlockColumnPredicate::evaluate(std::vector<doris::COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>, std::allocator<doris::COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn> > >&, unsigned short*, unsigned short) const at /root/doris/be/src/olap/block_column_predicate.cpp:133
9# doris::segment_v2::SegmentIterator::_evaluate_short_circuit_predicate(unsigned short*, unsigned short) at /root/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:2196
10# doris::segment_v2::SegmentIterator::_next_batch_internal(doris::vectorized::Block*) at /root/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:2491
11# doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block*)::$_0::operator()() const at /root/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:2252
12# doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block*) at /root/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:2251
13# doris::segment_v2::LazyInitSegmentIterator::next_batch(doris::vectorized::Block*) in /root/doris/be/output/lib/doris_be
14# doris::BetaRowsetReader::next_block(doris::vectorized::Block*) at /root/doris/be/src/olap/rowset/beta_rowset_reader.cpp:348
15# doris::vectorized::VCollectIterator::Level0Iterator::_refresh() in /root/doris/be/output/lib/doris_be
16# doris::vectorized::VCollectIterator::Level0Iterator::refresh_current_row() at /root/doris/be/src/vec/olap/vcollect_iterator.cpp:515
17# doris::vectorized::VCollectIterator::Level0Iterator::ensure_first_row_ref() at /root/doris/be/src/vec/olap/vcollect_iterator.cpp:486
18# doris::vectorized::VCollectIterator::Level1Iterator::ensure_first_row_ref() at /root/doris/be/src/vec/olap/vcollect_iterator.cpp:701
19# doris::vectorized::VCollectIterator::build_heap(std::vector<std::shared_ptr<doris::RowsetReader>, std::allocator<std::shared_ptr<doris::RowsetReader> > >&) at /root/doris/be/src/vec/olap/vcollect_iterator.cpp:189
20# doris::vectorized::BlockReader::_init_collect_iter(doris::TabletReader::ReaderParams const&) at /root/doris/be/src/vec/olap/block_reader.cpp:152
21# doris::vectorized::BlockReader::init(doris::TabletReader::ReaderParams const&) at /root/doris/be/src/vec/olap/block_reader.cpp:226
22# doris::vectorized::OlapScanner::open(doris::RuntimeState*) at /root/doris/be/src/vec/exec/scan/olap_scanner.cpp:271
23# doris::vectorized::ScannerScheduler::_scanner_scan(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>) at /root/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:182
24# doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}::operator()() const::{lambda()#1}::operator()() const at /root/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:96
25# doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}::operator()() const at /root/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:95
26# bool std::__invoke_impl<bool, doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}&>(std::__invoke_other, doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:63
27# std::enable_if<is_invocable_r_v<bool, doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}&>, bool>::type std::__invoke_r<bool, doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}&>(doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:116
28# std::_Function_handler<bool (), doris::vectorized::ScannerScheduler::submit(std::shared_ptr<doris::vectorized::ScannerContext>, std::shared_ptr<doris::vectorized::ScanTask>)::$_0::operator()() const::{lambda()#1}>::_M_invoke(std::_Any_data const&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:292
29# std::function<bool ()>::operator()() const at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:593
30# doris::vectorized::ScannerSplitRunner::process_for(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) at /root/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:410
31# doris::vectorized::PrioritizedSplitRunner::process() at /root/doris/be/src/vec/exec/executor/time_sharing/prioritized_split_runner.cpp:103
32# doris::vectorized::TimeSharingTaskExecutor::_dispatch_thread() at /root/doris/be/src/vec/exec/executor/time_sharing/time_sharing_task_executor.cpp:570
33# void std::__invoke_impl<void, void (doris::vectorized::TimeSharingTaskExecutor::*&)(), doris::vectorized::TimeSharingTaskExecutor*&>(std::__invoke_memfun_deref, void (doris::vectorized::TimeSharingTaskExecutor::*&)(), doris::vectorized::TimeSharingTaskExecutor*&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:76
34# std::__invoke_result<void (doris::vectorized::TimeSharingTaskExecutor::*&)(), doris::vectorized::TimeSharingTaskExecutor*&>::type std::__invoke<void (doris::vectorized::TimeSharingTaskExecutor::*&)(), doris::vectorized::TimeSharingTaskExecutor*&>(void (doris::vectorized::TimeSharingTaskExecutor::*&)(), doris::vectorized::TimeSharingTaskExecutor*&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:98
35# void std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/functional:515
36# void std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>::operator()<, void>() at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/functional:600
37# void std::__invoke_impl<void, std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>&>(std::__invoke_other, std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:63
38# std::enable_if<is_invocable_r_v<void, std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>&>, void>::type std::__invoke_r<void, std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>&>(std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()>&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:119
39# std::_Function_handler<void (), std::_Bind<void (doris::vectorized::TimeSharingTaskExecutor::*(doris::vectorized::TimeSharingTaskExecutor*))()> >::_M_invoke(std::_Any_data const&) at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:292
40# std::function<void ()>::operator()() const at /root/ldb_toolchain_taipan/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:593
41# doris::Thread::supervise_thread(void*) at /root/doris/be/src/util/thread.cpp:460
42# asan_thread_start(void*) in /root/doris/be/output/lib/doris_be
43# start_thread in /lib64/libpthread.so.0
44# __GI___clone in /lib64/libc.so.6
```
Related PR: #xxx
Problem Summary:
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [ ] Unit Test
- [ ] Manual test (add detailed scripts or steps below)
- [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [ ] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [ ] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
apache/doris-website#1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR
should merge into -->1 parent a793b19 commit fca7aff
File tree
6 files changed
+96
-5
lines changed- be/src
- common
- olap
- rowset/segment_v2
- regression-test
- data/query_p0/sql_functions/conditional_functions
- suites/query_p0/sql_functions/conditional_functions
6 files changed
+96
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
426 | | - | |
| 426 | + | |
427 | 427 | | |
428 | 428 | | |
429 | 429 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
| 460 | + | |
461 | 461 | | |
462 | 462 | | |
463 | 463 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
| |||
526 | 527 | | |
527 | 528 | | |
528 | 529 | | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
529 | 535 | | |
530 | 536 | | |
531 | 537 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1890 | 1890 | | |
1891 | 1891 | | |
1892 | 1892 | | |
1893 | | - | |
1894 | | - | |
1895 | | - | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
1896 | 1897 | | |
1897 | 1898 | | |
1898 | 1899 | | |
| |||
Lines changed: 17 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
Lines changed: 67 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
0 commit comments