HappenLee opened a new pull request, #14984:
URL: https://github.com/apache/doris/pull/14984
# Proposed changes
fix bug of reserve not enough
```
==21902==ERROR: AddressSanitizer: heap-buffer-overflow on address
0x7f730c7df000 at pc 0x55918c70fe1f bp 0x7f744e24cde0 sp 0x7f744e24cdd0
WRITE of size 16 at 0x7f730c7df000 thread T138 (_scanner_scan)
#0 0x55918c70fe1e in void
doris::vectorized::PODArray<doris::StringValue, 4096ul, Allocator<false,
false>, 15ul,
16ul>::push_back_without_reserve<doris::StringValue&>(doris::StringValue&)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/common/pod_array.h:424
#1 0x55918c71413e in
doris::vectorized::PredicateColumnType<(doris::PrimitiveType)23>::insert_string_value(char
const*, unsigned long)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/columns/predicate_column.h:191
#2 0x55918c70f992 in
doris::vectorized::PredicateColumnType<(doris::PrimitiveType)23>::insert_data(char
const*, unsigned long)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/columns/predicate_column.h:215
#3 0x55918c7035c2 in
doris::vectorized::ColumnDictionary<int>::convert_to_predicate_column_if_dictionary()
/mnt/disk1/happen/doris-verion/doris/be/src/vec/columns/column_dictionary.h:286
#4 0x5591913b3d08 in
doris::vectorized::ColumnNullable::convert_to_predicate_column_if_dictionary()
/mnt/disk1/happen/doris-verion/doris/be/src/vec/columns/column_nullable.h:302
#5 0x55918da54cf3 in
doris::segment_v2::BinaryDictPageDecoder::next_batch(unsigned long*,
COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>&)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/binary_dict_page.cpp:242
#6 0x55918d8583bf in
doris::segment_v2::FileColumnIterator::next_batch(unsigned long*,
COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>&,
bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/column_reader.cpp:805
#7 0x55918daf182f in
doris::segment_v2::ColumnIterator::next_batch(unsigned long*,
COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>&)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/column_reader.h:254
#8 0x55918dae41e6 in
doris::segment_v2::SegmentIterator::_read_columns(std::vector<unsigned int,
std::allocator<unsigned int> > const&,
std::vector<COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>,
std::allocator<COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>
> >&, unsigned long)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:923
#9 0x55918dae594f in
doris::segment_v2::SegmentIterator::_read_columns_by_index(unsigned int,
unsigned int&, bool)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:986
#10 0x55918dae8b5c in
doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:1143
#11 0x55919a88cea2 in
doris::vectorized::VUnionIterator::next_batch(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vgeneric_iterators.cpp:383
#12 0x55918e690ac5 in
doris::BetaRowsetReader::next_block(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/beta_rowset_reader.cpp:298
#13 0x55919a8ad395 in
doris::vectorized::VCollectIterator::Level0Iterator::next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:267
#14 0x55919a8b1f97 in
doris::vectorized::VCollectIterator::Level1Iterator::_normal_next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:533
#15 0x55919a8af001 in
doris::vectorized::VCollectIterator::Level1Iterator::next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:359
#16 0x55919a8ab63e in
doris::vectorized::VCollectIterator::next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:187
#17 0x55919a8c7ed4 in
doris::vectorized::BlockReader::_direct_next_block(doris::vectorized::Block*,
doris::MemPool*, doris::ObjectPool*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/block_reader.cpp:167
#18 0x55918d33c620 in
doris::vectorized::BlockReader::next_block_with_aggregation(doris::vectorized::Block*,
doris::MemPool*, doris::ObjectPool*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/block_reader.h:45
#19 0x55919b10b053 in
doris::vectorized::NewOlapScanner::_get_block_impl(doris::RuntimeState*,
doris::vectorized::Block*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/new_olap_scanner.cpp:315
#20 0x55919afcee80 in
doris::vectorized::VScanner::get_block(doris::RuntimeState*,
doris::vectorized::Block*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/vscanner.cpp:53
#21 0x55919afa77b3 in
doris::vectorized::ScannerScheduler::_scanner_scan(doris::vectorized::ScannerScheduler*,
doris::vectorized::ScannerContext*, doris::vectorized::VScanner*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:236
#22 0x55919afa5a21 in operator()
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:143
#23 0x55919afa9a0b in __invoke_impl<void,
doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::<lambda()>&>
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:61
#24 0x55919afa9683 in __invoke_r<void,
doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::<lambda()>&>
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:111
#25 0x55919afa902b in _M_invoke
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/std_function.h:291
#26 0x55918e7ebe95 in std::function<void ()>::operator()() const
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/std_function.h:560
#27 0x55918f34f89f in doris::FunctionRunnable::run()
/mnt/disk1/happen/doris-verion/doris/be/src/util/threadpool.cpp:45
#28 0x55918f34a6eb in doris::ThreadPool::dispatch_thread()
/mnt/disk1/happen/doris-verion/doris/be/src/util/threadpool.cpp:534
#29 0x55918f36c06d in void std::__invoke_impl<void, void
(doris::ThreadPool::*&)(), doris::ThreadPool*&>(std::__invoke_memfun_deref,
void (doris::ThreadPool::*&)(), doris::ThreadPool*&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:74
#30 0x55918f36b90c in std::__invoke_result<void
(doris::ThreadPool::*&)(), doris::ThreadPool*&>::type std::__invoke<void
(doris::ThreadPool::*&)(), doris::ThreadPool*&>(void (doris::ThreadPool::*&)(),
doris::ThreadPool*&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:96
#31 0x55918f36acab in void std::_Bind<void
(doris::ThreadPool::*(doris::ThreadPool*))()>::__call<void, ,
0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/functional:420
#32 0x55918f3697bc in void std::_Bind<void
(doris::ThreadPool::*(doris::ThreadPool*))()>::operator()<, void>()
/mnt/disk1/happen/ldb_toolchain/include/c++/11/functional:503
#33 0x55918f3663ad in void std::__invoke_impl<void, std::_Bind<void
(doris::ThreadPool::*(doris::ThreadPool*))()>&>(std::__invoke_other,
std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:61
#34 0x55918f363865 in std::enable_if<is_invocable_r_v<void,
std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&>, void>::type
std::__invoke_r<void, std::_Bind<void
(doris::ThreadPool::*(doris::ThreadPool*))()>&>(std::_Bind<void
(doris::ThreadPool::*(doris::ThreadPool*))()>&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:111
#35 0x55918f35eb64 in std::_Function_handler<void (), std::_Bind<void
(doris::ThreadPool::*(doris::ThreadPool*))()> >::_M_invoke(std::_Any_data
const&) /mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/std_function.h:291
#36 0x55918e7ebe95 in std::function<void ()>::operator()() const
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/std_function.h:560
#37 0x55918f32a38f in doris::Thread::supervise_thread(void*)
/mnt/disk1/happen/doris-verion/doris/be/src/util/thread.cpp:454
#38 0x7f752d075ea4 in start_thread (/lib64/libpthread.so.0+0x7ea4)
#39 0x7f752d3888dc in __clone (/lib64/libc.so.6+0xfe8dc)
0x7f730c7df000 is located 6144 bytes to the left of 617327-byte region
[0x7f730c7e0800,0x7f730c87736f)
freed by thread T138 (_scanner_scan) here:
#0 0x55918c35d377 in operator delete[](void*)
(/data/doris/be/lib/doris_be+0xf15b377)
#1 0x55918c48b68a in std::enable_if<std::is_convertible<char (*) [],
char (*) []>::value, void>::type std::default_delete<char
[]>::operator()<char>(char*) const
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/unique_ptr.h:120
#2 0x55918c48b737 in std::__uniq_ptr_impl<char, std::default_delete<char
[]> >::reset(char*)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/unique_ptr.h:182
#3 0x55918d9d4143 in std::__uniq_ptr_impl<char, std::default_delete<char
[]> >::operator=(std::__uniq_ptr_impl<char, std::default_delete<char []> >&&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/unique_ptr.h:167
#4 0x55918d99220c in std::__uniq_ptr_data<char, std::default_delete<char
[]>, true, true>::operator=(std::__uniq_ptr_data<char, std::default_delete<char
[]>, true, true>&&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/unique_ptr.h:212
#5 0x55918d992236 in std::unique_ptr<char [], std::default_delete<char
[]> >::operator=(std::unique_ptr<char [], std::default_delete<char []> >&&)
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/unique_ptr.h:623
#6 0x55918da339b7 in
doris::segment_v2::PageIO::read_and_decompress_page(doris::segment_v2::PageReadOptions
const&, doris::segment_v2::PageHandle*, doris::Slice*,
doris::segment_v2::PageFooterPB*)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/page_io.cpp:185
#7 0x55918d849104 in
doris::segment_v2::ColumnReader::read_page(doris::segment_v2::ColumnIteratorOptions
const&, doris::segment_v2::PagePointer const&, doris::segment_v2::PageHandle*,
doris::Slice*, doris::segment_v2::PageFooterPB*, doris::BlockCompressionCodec*)
const
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/column_reader.cpp:161
#8 0x55918d85af76 in
doris::segment_v2::FileColumnIterator::_read_data_page(doris::segment_v2::OrdinalPageIndexIterator
const&)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/column_reader.cpp:932
#9 0x55918d85547c in
doris::segment_v2::FileColumnIterator::seek_to_ordinal(unsigned long)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/column_reader.cpp:654
#10 0x55918dade6c2 in
doris::segment_v2::SegmentIterator::_seek_columns(std::vector<unsigned int,
std::allocator<unsigned int> > const&, unsigned int)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:611
#11 0x55918dae5735 in
doris::segment_v2::SegmentIterator::_read_columns_by_index(unsigned int,
unsigned int&, bool)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:983
#12 0x55918dae8b5c in
doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:1143
#13 0x55919a88cea2 in
doris::vectorized::VUnionIterator::next_batch(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vgeneric_iterators.cpp:383
#14 0x55918e690ac5 in
doris::BetaRowsetReader::next_block(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/olap/rowset/beta_rowset_reader.cpp:298
#15 0x55919a8ad395 in
doris::vectorized::VCollectIterator::Level0Iterator::next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:267
#16 0x55919a8b1f97 in
doris::vectorized::VCollectIterator::Level1Iterator::_normal_next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:533
#17 0x55919a8af001 in
doris::vectorized::VCollectIterator::Level1Iterator::next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:359
#18 0x55919a8ab63e in
doris::vectorized::VCollectIterator::next(doris::vectorized::Block*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/vcollect_iterator.cpp:187
#19 0x55919a8c7ed4 in
doris::vectorized::BlockReader::_direct_next_block(doris::vectorized::Block*,
doris::MemPool*, doris::ObjectPool*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/block_reader.cpp:167
#20 0x55918d33c620 in
doris::vectorized::BlockReader::next_block_with_aggregation(doris::vectorized::Block*,
doris::MemPool*, doris::ObjectPool*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/olap/block_reader.h:45
#21 0x55919b10b053 in
doris::vectorized::NewOlapScanner::_get_block_impl(doris::RuntimeState*,
doris::vectorized::Block*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/new_olap_scanner.cpp:315
#22 0x55919afcee80 in
doris::vectorized::VScanner::get_block(doris::RuntimeState*,
doris::vectorized::Block*, bool*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/vscanner.cpp:53
#23 0x55919afa77b3 in
doris::vectorized::ScannerScheduler::_scanner_scan(doris::vectorized::ScannerScheduler*,
doris::vectorized::ScannerContext*, doris::vectorized::VScanner*)
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:236
#24 0x55919afa5a21 in operator()
/mnt/disk1/happen/doris-verion/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:143
#25 0x55919afa9a0b in __invoke_impl<void,
doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::<lambda()>&>
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:61
#26 0x55919afa9683 in __invoke_r<void,
doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::<lambda()>&>
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/invoke.h:111
#27 0x55919afa902b in _M_invoke
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/std_function.h:291
#28 0x55918e7ebe95 in std::function<void ()>::operator()() const
/mnt/disk1/happen/ldb_toolchain/include/c++/11/bits/std_function.h:560
#29 0x55918f34f89f in doris::FunctionRunnable::run()
/mnt/disk1/happen/doris-verion/doris/be/src/util/threadpool.cpp:45
```
## Checklist(Required)
1. Does it affect the original behavior:
- [ ] Yes
- [ ] No
- [ ] I don't know
2. Has unit tests been added:
- [ ] Yes
- [ ] No
- [ ] No Need
3. Has document been added or modified:
- [ ] Yes
- [ ] No
- [ ] No Need
4. Does it need to update dependencies:
- [ ] Yes
- [ ] No
5. Are there any changes that cannot be rolled back:
- [ ] Yes (If Yes, please explain WHY)
- [ ] No
## Further comments
If this is a relatively large or complex change, kick off the discussion at
[[email protected]](mailto:[email protected]) 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: [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]