amorynan opened a new pull request, #34076: URL: https://github.com/apache/doris/pull/34076
FIX: 1. array with empty row which will make doc id is not right 2. array with inverted index with large data set . then compaction action is triggered , maybe here a core would happened like ``` ================================================================= ==1006012==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7f4170e7f800 at pc 0x5564999e655a bp 0x7f46478a19d0 sp 0x7f46478a19c8 READ of size 1 at 0x7f4170e7f800 thread T1281 (CumuCompactionT) #0 0x5564999e6559 in doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::add_array_values(unsigned long, void const*, unsigned char const*, unsigned char const*, unsigned long) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:418:25 #1 0x55649995254f in doris::segment_v2::ArrayColumnWriter::append_data(unsigned char const**, unsigned long) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:960:13 #2 0x556499952a7d in doris::segment_v2::ArrayColumnWriter::append_nullable(unsigned char const*, unsigned char const**, unsigned long) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:978:5 #3 0x55649994568c in doris::segment_v2::ColumnWriter::append(unsigned char const*, void const*, unsigned long) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:419:16 #4 0x5564998fdfc0 in doris::segment_v2::SegmentWriter::append_block(doris::vectorized::Block const*, unsigned long, unsigned long) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:842:9 #5 0x556499ad46df in doris::VerticalBetaRowsetWriter<doris::BetaRowsetWriter>::add_columns(doris::vectorized::Block const*, std::vector<unsigned int, std::allocator<unsigned int>> const&, bool, unsigned int) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/rowset/vertical_beta_rowset_writer.cpp:112:13 #6 0x556499146a2a in doris::Merger::vertical_compact_one_group(std::shared_ptr<doris::BaseTablet>, doris::ReaderType, doris::TabletSchema const&, bool, std::vector<unsigned int, std::allocator<unsigned int>> const&, doris::vectorized::RowSourcesBuffer*, std::vector<std::shared_ptr<doris::RowsetReader>, std::allocator<std::shared_ptr<doris::RowsetReader>>> const&, doris::RowsetWriter*, long, doris::Merger::Statistics*, std::vector<unsigned int, std::allocator<unsigned int>>) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/merger.cpp:297:9 #7 0x556499149b6f in doris::Merger::vertical_merge_rowsets(std::shared_ptr<doris::BaseTablet>, doris::ReaderType, doris::TabletSchema const&, std::vector<std::shared_ptr<doris::RowsetReader>, std::allocator<std::shared_ptr<doris::RowsetReader>>> const&, doris::RowsetWriter*, long, doris::Merger::Statistics*) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/merger.cpp:406:9 #8 0x5564990accf9 in doris::Compaction::merge_input_rowsets() /mnt/disk1/wangqiannan/amory/doris/be/src/olap/compaction.cpp:175:19 #9 0x5564990b4cc3 in doris::CompactionMixin::execute_compact_impl(long) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/compaction.cpp:435:5 #10 0x5564990b33ff in doris::CompactionMixin::execute_compact() /mnt/disk1/wangqiannan/amory/doris/be/src/olap/compaction.cpp:388:17 #11 0x556499df7514 in doris::CumulativeCompaction::execute_compact() /mnt/disk1/wangqiannan/amory/doris/be/src/olap/cumulative_compaction.cpp:101:5 #12 0x556499d94e2f in doris::Tablet::execute_compaction(doris::CompactionMixin&) /mnt/disk1/wangqiannan/amory/doris/be/src/olap/tablet.cpp:1662:29 #13 0x5564990097d8 in doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1::operator()() const /mnt/disk1/wangqiannan/amory/doris/be/src/olap/olap_server.cpp:1001:25 #14 0x556499009304 in void std::__invoke_impl<void, doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1&>(std::__invoke_other, doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1&) /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61:14 #15 0x5564990092a4 in std::enable_if<is_invocable_r_v<void, doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1&>, void>::type std::__invoke_r<void, doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1&>(doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1&) /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111:2 #16 0x5564990090ac in std::_Function_handler<void (), doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>, doris::CompactionType, bool)::$_1>::_M_invoke(std::_Any_data const&) /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291:9 #17 0x556497352fb2 in std::function<void ()>::operator()() const /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560:9 #18 0x55649b1a6018 in doris::FunctionRunnable::run() /mnt/disk1/wangqiannan/amory/doris/be/src/util/threadpool.cpp:48:27 #19 0x55649b191dcd in doris::ThreadPool::dispatch_thread() /mnt/disk1/wangqiannan/amory/doris/be/src/util/threadpool.cpp:543:24 #20 0x55649b1b8ef3 in void std::__invoke_impl<void, void (doris::ThreadPool::*&)(), doris::ThreadPool*&>(std::__invoke_memfun_deref, void (doris::ThreadPool::*&)(), doris::ThreadPool*&) /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74:14 #21 0x55649b1b8dcc in std::__invoke_result<void (doris::ThreadPool::*&)(), doris::ThreadPool*&>::type std::__invoke<void (doris::ThreadPool::*&)(), doris::ThreadPool*&>(void (doris::ThreadPool::*&)(), doris::ThreadPool*&) /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96:14 #22 0x55649b1b8d54 in void std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>::__call<void, 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:420:11 #23 0x55649b1b8bfd in void std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>::operator()<void>() /mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:503:17 ``` ## Proposed changes Issue Number: close #xxx <!--Describe your changes.--> ## Further comments If this is a relatively large or complex change, kick off the discussion at [d...@doris.apache.org](mailto:d...@doris.apache.org) by explaining why you chose the solution you did and what alternatives you considered, etc... -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org