airborne12 opened a new pull request, #42207:
URL: https://github.com/apache/doris/pull/42207

   ## Proposed changes
   
   Fix UAF as below
   ```
   ==16442==ERROR: AddressSanitizer: heap-use-after-free on address 
0x60f0008718a0 at pc 0x5586663cea7a bp 0x7f02673d0530 sp 0x7f02673d0528
   READ of size 8 at 0x60f0008718a0 thread T490 (CumuCompactionT)
       #0 0x5586663cea79 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::finish() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:549:63
       #1 0x5586663360bc in 
doris::segment_v2::ScalarColumnWriter::write_inverted_index() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:640:41
       #2 0x5586662ce160 in 
doris::segment_v2::SegmentWriter::_write_inverted_index() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:1435:9
       #3 0x5586662ccb13 in 
doris::segment_v2::SegmentWriter::finalize_columns_index(unsigned long*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:1317:5
       #4 0x55866653c074 in 
doris::VerticalBetaRowsetWriter::_flush_columns(doris::segment_v2::SegmentWriter*,
 bool) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/vertical_beta_rowset_writer.cpp:127:5
       #5 0x558666534e3f in 
doris::VerticalBetaRowsetWriter::flush_columns(bool) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/vertical_beta_rowset_writer.cpp:153:5
       #6 0x558665a8d8b2 in 
doris::Merger::vertical_compact_one_group(std::shared_ptr, doris::ReaderType, 
doris::TabletSchema const&, bool, std::vector> const&, 
doris::vectorized::RowSourcesBuffer*, std::vector, std::allocator>> const&, 
doris::RowsetWriter*, long, doris::Merger::Statistics*, std::vector>, long, 
doris::CompactionSampleInfo*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/merger.cpp:333:5
       #7 0x558665a93190 in 
doris::Merger::vertical_merge_rowsets(std::shared_ptr, doris::ReaderType, 
doris::TabletSchema const&, std::vector, std::allocator>> const&, 
doris::RowsetWriter*, long, long, doris::Merger::Statistics*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/merger.cpp:471:21
       #8 0x558665a00fd7 in doris::Compaction::merge_input_rowsets() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:192:19
       #9 0x558665a329a3 in 
doris::CloudCompactionMixin::execute_compact_impl(long) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:1158:5
       #10 0x558665a33381 in doris::CloudCompactionMixin::execute_compact() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:1173:5
       #11 0x55869a893d89 in 
doris::CloudCumulativeCompaction::execute_compact() 
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_cumulative_compaction.cpp:191:38
       #12 0x55869a861fac in 
doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr 
const&)::$_1::operator()() const 
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_storage_engine.cpp:693:31
       #13 0x55869a861fac in void std::__invoke_impl 
const&)::$_1&>(std::__invoke_other, 
doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr 
const&)::$_1&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61:14
       #14 0x55869a861fac in std::enable_if const&)::$_1&>, void>::type 
std::__invoke_r 
const&)::$_1&>(doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr
 const&)::$_1&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111:2
       #15 0x55869a861fac in std::_Function_handler 
const&)::$_1>::_M_invoke(std::_Any_data const&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291:9
       #16 0x5586679033fb in doris::ThreadPool::dispatch_thread() 
/home/zcp/repo_center/doris_master/doris/be/src/util/threadpool.cpp:543:24
       #17 0x5586678db057 in doris::Thread::supervise_thread(void*) 
/home/zcp/repo_center/doris_master/doris/be/src/util/thread.cpp:498:5
       #18 0x7f0639d7bac2 in start_thread nptl/pthread_create.c:442:8
       #19 0x7f0639e0d84f  misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
   
   0x60f0008718a0 is located 0 bytes inside of 168-byte region 
[0x60f0008718a0,0x60f000871948)
   freed by thread T490 (CumuCompactionT) here:
       #0 0x558663259d9d in operator delete(void*) 
(/mnt/hdd01/ci/master-deploy/cluster0/be/lib/doris_be+0x337a1d9d) (BuildId: 
fa8094411569cb8d)
       #1 0x558665a655eb in 
std::default_delete::operator()(lucene::store::Directory*) const 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:85:2
       #2 0x558665a655eb in std::unique_ptr>::~unique_ptr() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:361:4
       #3 0x558665f83dfe in std::pair, std::allocator>> const, 
std::unique_ptr>>::~pair() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_iterator.h:2379:12
       #4 0x558665f83dfe in void std::destroy_at, std::allocator>> const, 
std::unique_ptr>>>(std::pair, std::allocator>> const, std::unique_ptr>>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:88:15
       #5 0x558665f83dfe in void std::allocator_traits, std::allocator>> const, 
std::unique_ptr>>>>>::destroy, std::allocator>> const, 
std::unique_ptr>>>(std::allocator, std::allocator>> const, 
std::unique_ptr>>>>&, std::pair, std::allocator>> const, std::unique_ptr>>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h:533:4
       #6 0x558665f83dfe in std::_Rb_tree, std::allocator>>, std::pair, 
std::allocator>> const, std::unique_ptr>>, std::_Select1st, std::allocator>> 
const, std::unique_ptr>>>, std::less, std::allocator>>>, std::allocator, 
std::allocator>> const, 
std::unique_ptr>>>>::_M_destroy_node(std::_Rb_tree_node, std::allocator>> 
const, std::unique_ptr>>>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_tree.h:623:2
       #7 0x558665f83dfe in std::_Rb_tree, std::allocator>>, std::pair, 
std::allocator>> const, std::unique_ptr>>, std::_Select1st, std::allocator>> 
const, std::unique_ptr>>>, std::less, std::allocator>>>, std::allocator, 
std::allocator>> const, std::unique_ptr>>>>::_M_drop_node(std::_Rb_tree_node, 
std::allocator>> const, std::unique_ptr>>>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_tree.h:631:2
       #8 0x558665f9e9b8 in std::pair, std::allocator>> const, 
std::unique_ptr>>>, bool> std::_Rb_tree, std::allocator>>, std::pair, 
std::allocator>> const, std::unique_ptr>>, std::_Select1st, std::allocator>> 
const, std::unique_ptr>>>, std::less, std::allocator>>>, std::allocator, 
std::allocator>> const, std::unique_ptr>>>>::_M_emplace_unique, 
std::allocator>>, std::unique_ptr>>(std::pair, std::allocator>>&&, 
std::unique_ptr>&&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_tree.h:2391:6
       #9 0x558665f86e29 in std::pair, std::allocator>> const, 
std::unique_ptr>>>, bool> std::map, std::allocator>>, std::unique_ptr>, 
std::less, std::allocator>>>, std::allocator, std::allocator>> const, 
std::unique_ptr>>>>::emplace, std::allocator>>, std::unique_ptr>>(std::pair, 
std::allocator>>&&, std::unique_ptr>&&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_map.h:577:16
       #10 0x558665f86e29 in 
doris::segment_v2::InvertedIndexFileWriter::open(doris::TabletIndex const*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_file_writer.cpp:60:19
       #11 0x5586663d0423 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::open_index_directory()
 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:160:16
       #12 0x5586663d00f7 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::init_bkd_index()
 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:146:16
       #13 0x5586663cb2d9 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::init() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:107:24
       #14 0x5586663b1201 in 
doris::segment_v2::InvertedIndexColumnWriter::create(doris::Field const*, 
std::unique_ptr>*, doris::segment_v2::InvertedIndexFileWriter*, 
doris::TabletIndex const*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:697:27
       #15 0x55866632cf8d in doris::segment_v2::ScalarColumnWriter::init() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:483:13
       #16 0x5586662a5e52 in 
doris::segment_v2::SegmentWriter::_create_column_writer(unsigned int, 
doris::TabletColumn const&, std::shared_ptr const&) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:267:5
       #17 0x5586662a71b4 in 
doris::segment_v2::SegmentWriter::_create_writers(std::shared_ptr const&, 
std::vector> const&) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:316:9
       #18 0x5586662a2be3 in 
doris::segment_v2::SegmentWriter::init(std::vector> const&, bool) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:285:5
       #19 0x5586665333b2 in 
doris::VerticalBetaRowsetWriter::add_columns(doris::vectorized::Block const*, 
std::vector> const&, bool, unsigned int) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/vertical_beta_rowset_writer.cpp:96:17
       #20 0x558665a8cb9b in 
doris::Merger::vertical_compact_one_group(std::shared_ptr, doris::ReaderType, 
doris::TabletSchema const&, bool, std::vector> const&, 
doris::vectorized::RowSourcesBuffer*, std::vector, std::allocator>> const&, 
doris::RowsetWriter*, long, doris::Merger::Statistics*, std::vector>, long, 
doris::CompactionSampleInfo*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/merger.cpp:309:9
       #21 0x558665a93190 in 
doris::Merger::vertical_merge_rowsets(std::shared_ptr, doris::ReaderType, 
doris::TabletSchema const&, std::vector, std::allocator>> const&, 
doris::RowsetWriter*, long, long, doris::Merger::Statistics*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/merger.cpp:471:21
       #22 0x558665a00fd7 in doris::Compaction::merge_input_rowsets() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:192:19
       #23 0x558665a329a3 in 
doris::CloudCompactionMixin::execute_compact_impl(long) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:1158:5
       #24 0x558665a33381 in doris::CloudCompactionMixin::execute_compact() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:1173:5
       #25 0x55869a893d89 in 
doris::CloudCumulativeCompaction::execute_compact() 
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_cumulative_compaction.cpp:191:38
       #26 0x55869a861fac in 
doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr 
const&)::$_1::operator()() const 
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_storage_engine.cpp:693:31
       #27 0x55869a861fac in void std::__invoke_impl 
const&)::$_1&>(std::__invoke_other, 
doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr 
const&)::$_1&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61:14
       #28 0x55869a861fac in std::enable_if const&)::$_1&>, void>::type 
std::__invoke_r 
const&)::$_1&>(doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr
 const&)::$_1&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111:2
       #29 0x55869a861fac in std::_Function_handler 
const&)::$_1>::_M_invoke(std::_Any_data const&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291:9
       #30 0x5586679033fb in doris::ThreadPool::dispatch_thread() 
/home/zcp/repo_center/doris_master/doris/be/src/util/threadpool.cpp:543:24
       #31 0x5586678db057 in doris::Thread::supervise_thread(void*) 
/home/zcp/repo_center/doris_master/doris/be/src/util/thread.cpp:498:5
       #32 0x7f0639d7bac2 in start_thread nptl/pthread_create.c:442:8
   
   previously allocated by thread T490 (CumuCompactionT) here:
       #0 0x55866325953d in operator new(unsigned long) 
(/mnt/hdd01/ci/master-deploy/cluster0/be/lib/doris_be+0x337a153d) (BuildId: 
fa8094411569cb8d)
       #1 0x558665fb7d7b in 
doris::segment_v2::DorisFSDirectoryFactory::getDirectory(std::shared_ptr 
const&, char const*, bool, lucene::store::LockFactory*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_fs_directory.cpp:797:15
       #2 0x558665f86b5c in 
doris::segment_v2::InvertedIndexFileWriter::open(doris::TabletIndex const*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_file_writer.cpp:58:17
       #3 0x5586663d0423 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::open_index_directory()
 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:160:16
       #4 0x5586663d00f7 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::init_bkd_index()
 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:146:16
       #5 0x5586663cb2d9 in 
doris::segment_v2::InvertedIndexColumnWriterImpl<(doris::FieldType)5>::init() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:107:24
       #6 0x5586663b1201 in 
doris::segment_v2::InvertedIndexColumnWriter::create(doris::Field const*, 
std::unique_ptr>*, doris::segment_v2::InvertedIndexFileWriter*, 
doris::TabletIndex const*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp:697:27
       #7 0x55866632cf8d in doris::segment_v2::ScalarColumnWriter::init() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:483:13
       #8 0x5586662a5e52 in 
doris::segment_v2::SegmentWriter::_create_column_writer(unsigned int, 
doris::TabletColumn const&, std::shared_ptr const&) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:267:5
       #9 0x5586662a71b4 in 
doris::segment_v2::SegmentWriter::_create_writers(std::shared_ptr const&, 
std::vector> const&) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:316:9
       #10 0x5586662a2be3 in 
doris::segment_v2::SegmentWriter::init(std::vector> const&, bool) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:285:5
       #11 0x5586665333b2 in 
doris::VerticalBetaRowsetWriter::add_columns(doris::vectorized::Block const*, 
std::vector> const&, bool, unsigned int) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/rowset/vertical_beta_rowset_writer.cpp:96:17
       #12 0x558665a8cb9b in 
doris::Merger::vertical_compact_one_group(std::shared_ptr, doris::ReaderType, 
doris::TabletSchema const&, bool, std::vector> const&, 
doris::vectorized::RowSourcesBuffer*, std::vector, std::allocator>> const&, 
doris::RowsetWriter*, long, doris::Merger::Statistics*, std::vector>, long, 
doris::CompactionSampleInfo*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/merger.cpp:309:9
       #13 0x558665a93190 in 
doris::Merger::vertical_merge_rowsets(std::shared_ptr, doris::ReaderType, 
doris::TabletSchema const&, std::vector, std::allocator>> const&, 
doris::RowsetWriter*, long, long, doris::Merger::Statistics*) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/merger.cpp:471:21
       #14 0x558665a00fd7 in doris::Compaction::merge_input_rowsets() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:192:19
       #15 0x558665a329a3 in 
doris::CloudCompactionMixin::execute_compact_impl(long) 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:1158:5
       #16 0x558665a33381 in doris::CloudCompactionMixin::execute_compact() 
/home/zcp/repo_center/doris_master/doris/be/src/olap/compaction.cpp:1173:5
       #17 0x55869a893d89 in 
doris::CloudCumulativeCompaction::execute_compact() 
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_cumulative_compaction.cpp:191:38
       #18 0x55869a861fac in 
doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr 
const&)::$_1::operator()() const 
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_storage_engine.cpp:693:31
       #19 0x55869a861fac in void std::__invoke_impl 
const&)::$_1&>(std::__invoke_other, 
doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr 
const&)::$_1&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61:14
       #20 0x55869a861fac in std::enable_if const&)::$_1&>, void>::type 
std::__invoke_r 
const&)::$_1&>(doris::CloudStorageEngine::_submit_cumulative_compaction_task(std::shared_ptr
 const&)::$_1&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111:2
       #21 0x55869a861fac in std::_Function_handler 
const&)::$_1>::_M_invoke(std::_Any_data const&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291:9
       #22 0x5586679033fb in doris::ThreadPool::dispatch_thread() 
/home/zcp/repo_center/doris_master/doris/be/src/util/threadpool.cpp:543:24
       #23 0x5586678db057 in doris::Thread::supervise_thread(void*) 
/home/zcp/repo_center/doris_master/doris/be/src/util/thread.cpp:498:5
       #24 0x7f0639d7bac2 in start_thread nptl/pthread_create.c:442:8
   ```
   
   


-- 
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

Reply via email to