Skip to content

Crash in mergeTreeAnalyzeIndexes #93817

@Algunenano

Description

@Algunenano

Describe the bug

Run 03620_mergeTreeAnalyzeIndexes.sql with add_minmax_index_for_numeric_columns=1. Server will crash when running select * from mergeTreeAnalyzeIndexes(currentDatabase(), data, key = 8193, 'no_such_part');

How to reproduce

No response

Error message and/or stacktrace

Core was generated by `/usr/bin/clickhouse server --config-file=/mnt/ch/ch_data/config/prod-1/config.xml --pid-file=/tmp/clickhouse-server-prod-1.pid'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000055ea742e2633 in std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::operator[][abi:ne210105](unsigned long) const (__n=0, this=<optimized out>) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__vector/vector.h:411
411         return this->__begin_[__n];
[Current thread is 1 (Thread 0x7f778fbff6c0 (LWP 406576))]
(gdb) bt
#0  0x000055ea742e2633 in std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::operator[][abi:ne210105](unsigned long) const (__n=0, this=<optimized out>) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__vector/vector.h:411
#1  DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes (parts_with_ranges=..., metadata_snapshot=..., mutations_snapshot=..., query_info=..., context=..., key_condition=..., part_offset_condition=..., total_offset_condition=..., 
    key_condition_rpn_template=..., skip_indexes=..., top_k_filter_info=..., reader_settings=..., log=..., num_streams=3, index_stats=..., use_skip_indexes=<optimized out>, use_skip_indexes_for_disjunctions_=<optimized out>, find_exact_ranges=false, is_final_query=false, 
    is_parallel_reading_from_replicas=false, result=...) at /mnt/ch/ClickHouse/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:1133
#2  0x000055ea73b57ed5 in DB::MergeTreeAnalyzeIndexSource::getIndexAnalysis (this=0x7f77b730f020) at /mnt/ch/ClickHouse/src/Storages/StorageMergeTreeAnalyzeIndexes.cpp:180
#3  0x000055ea73b5618d in DB::MergeTreeAnalyzeIndexSource::generate (this=0x9fa) at /mnt/ch/ClickHouse/src/Storages/StorageMergeTreeAnalyzeIndexes.cpp:75
#4  0x000055ea74b47bf5 in DB::ISource::tryGenerate (this=0x9fa) at /mnt/ch/ClickHouse/src/Processors/ISource.cpp:144
#5  0x000055ea74b47811 in DB::ISource::work (this=0x7f77b730f020) at /mnt/ch/ClickHouse/src/Processors/ISource.cpp:110
#6  0x000055ea74b630f2 in DB::executeJob (node=0x7f778bca8500, read_progress_callback=0x7f7901d8f380) at /mnt/ch/ClickHouse/src/Processors/Executors/ExecutionThreadContext.cpp:53
#7  DB::ExecutionThreadContext::executeTask (this=0x7f777d8fce40) at /mnt/ch/ClickHouse/src/Processors/Executors/ExecutionThreadContext.cpp:102
#8  0x000055ea74b556ae in DB::PipelineExecutor::executeStepImpl (this=0x7f7791c66b98, thread_num=<optimized out>, cpu_slot=0x7f7902e64000, yield_flag=0x0) at /mnt/ch/ClickHouse/src/Processors/Executors/PipelineExecutor.cpp:351
#9  0x000055ea74b54cf3 in DB::PipelineExecutor::executeSingleThread (this=0x7f7791c66b98, thread_num=2554, thread_num@entry=140152862762976, cpu_slot=<optimized out>) at /mnt/ch/ClickHouse/src/Processors/Executors/PipelineExecutor.cpp:279
#10 DB::PipelineExecutor::executeImpl (this=0x7f7791c66b98, num_threads=1, concurrency_control=<optimized out>) at /mnt/ch/ClickHouse/src/Processors/Executors/PipelineExecutor.cpp:602
#11 0x000055ea74b548cb in DB::PipelineExecutor::execute (this=0x7f7791c66b98, num_threads=1, concurrency_control=true) at /mnt/ch/ClickHouse/src/Processors/Executors/PipelineExecutor.cpp:136
#12 0x000055ea74b6b673 in DB::threadFunction (data=..., thread_group=..., num_threads=1, concurrency_control=true) at /mnt/ch/ClickHouse/src/Processors/Executors/PullingAsyncPipelineExecutor.cpp:76
#13 DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0::operator()() const (this=<optimized out>) at /mnt/ch/ClickHouse/src/Processors/Executors/PullingAsyncPipelineExecutor.cpp:102
#14 std::__1::__invoke[abi:ne210105]<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&) (__args=...) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__type_traits/invoke.h:87
#15 __apply_tuple_impl<(lambda at /mnt/ch/ClickHouse/src/Processors/Executors/PullingAsyncPipelineExecutor.cpp:100:21) &, std::__1::tuple<> &> (__f=..., __t=...) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/tuple:1380
#16 std::__1::apply[abi:ne210105]<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&, std::__1::tuple<>&>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&, std::__1::tuple<>&) (__f=..., __t=...)
    at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/tuple:1384
#17 ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}::operator()() (this=<optimized out>)
    at /mnt/ch/ClickHouse/src/Common/ThreadPool.h:312
#18 std::__1::__invoke[abi:ne210105]<ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}&>(ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}&) (__args=...)
    at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__type_traits/invoke.h:87
#19 std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne210105]<ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}&>(ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}&) (__args=...)
    at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__type_traits/invoke.h:342
#20 std::__1::__invoke_r[abi:ne210105]<void, ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}&>(ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}&) (__args=...)
    at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__type_traits/invoke.h:348
#21 std::__1::__function::__policy_func<void ()>::__call_func[abi:ne210105]<ThreadFromGlobalPoolImpl<true, true>::ThreadFromGlobalPoolImpl<DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0>(DB::PullingAsyncPipelineExecutor::pull(DB::Chunk&, unsigned long)::$_0&&)::{lambda()#1}>(std::__1::__function::__policy_storage const*) (__buf=<optimized out>) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__functional/function.h:450
#22 0x000055ea6a8e150e in std::__1::__function::__policy_func<void ()>::operator()[abi:ne210105]() const (this=0x7f778fbf5270) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__functional/function.h:508
#23 std::__1::function<void()>::operator() (this=0x7f778fbf5270) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__functional/function.h:772
#24 ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool::worker (this=0x7f78f5a02820) at /mnt/ch/ClickHouse/src/Common/ThreadPool.cpp:811
#25 0x000055ea6a8e720e in std::__1::__invoke[abi:ne210105]<void (ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool::*)(), ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool*>(void (ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool::*&&)(), ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool*&&) (__args=@0x7f78f5a02858: 0x7f78f5a02820, __args=@0x7f78f5a02858: 0x7f78f5a02820) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__type_traits/invoke.h:87
#26 std::__1::__thread_execute[abi:ne210105]<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool::*)(), ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool*, 2ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool::*)(), ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool*>&, std::__1::__tuple_indices<2ul>) (
    __t=...) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__thread/thread.h:159
#27 std::__1::__thread_proxy[abi:ne210105]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool::*)(), ThreadPoolImpl<std::__1::thread>::ThreadFromThreadPool*> >(void*) (__vp=0x7f78f5a02840) at /mnt/ch/ClickHouse/contrib/llvm-project/libcxx/include/__thread/thread.h:168
#28 0x00007f79ed89698b in start_thread (arg=<optimized out>) at pthread_create.c:448
#29 0x00007f79ed91a9cc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
(gdb) f 1
#1  DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes (parts_with_ranges=..., metadata_snapshot=..., mutations_snapshot=..., query_info=..., context=..., key_condition=..., part_offset_condition=..., total_offset_condition=..., 
    key_condition_rpn_template=..., skip_indexes=..., top_k_filter_info=..., reader_settings=..., log=..., num_streams=3, index_stats=..., use_skip_indexes=<optimized out>, use_skip_indexes_for_disjunctions_=<optimized out>, find_exact_ranges=false, is_final_query=false, 
    is_parallel_reading_from_replicas=false, result=...) at /mnt/ch/ClickHouse/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:1133
1133                const auto & index_and_condition = skip_indexes.useful_indices[skip_indexes.per_part_index_orders[part_index][idx]];
(gdb) p idx
$1 = 0
(gdb) p part_index
$2 = 0
(gdb) quit

Metadata

Metadata

Assignees

Labels

blockerThis issue / pr blocks a new releasetestingSpecial issue with list of bugs found by CI

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions