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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]