This is an automated email from the ASF dual-hosted git repository.

eldenmoon pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new c4b2ddd688d [Fix](Variant) clear block after a flush complete (#35226) 
(#35372)
c4b2ddd688d is described below

commit c4b2ddd688ddb66b001ae80be4faaf599d3753a3
Author: lihangyu <15605149...@163.com>
AuthorDate: Fri May 24 19:10:07 2024 +0800

    [Fix](Variant) clear block after a flush complete (#35226) (#35372)
    
    Otherwise result in crash
    
    ```
    *** SIGSEGV address not mapped to object (@0x0) received by PID 4149909 
(TID 4152328 OR 0x7efefc60d700) from PID 0; stack trace: ***
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/home/zcp/repo_center/doris_master/doris/be/src/common/signal_handler.h:421
     1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in 
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
     2# JVM_handle_linux_signal in 
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
     3# 0x00007F031AD0E090 in /lib/x86_64-linux-gnu/libc.so.6
     4# doris::Status 
doris::vectorized::MutableBlock::merge_impl<doris::vectorized::Block 
const&>(doris::vectorized::Block const&) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/core/block.h:586
     5# doris::Status 
doris::vectorized::MutableBlock::merge<doris::vectorized::Block 
const&>(doris::vectorized::Block const&) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/core/block.h:521
    ```
---
 be/src/olap/rowset/segment_creator.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/be/src/olap/rowset/segment_creator.cpp 
b/be/src/olap/rowset/segment_creator.cpp
index ffa8a1b2916..f7b364a9fd1 100644
--- a/be/src/olap/rowset/segment_creator.cpp
+++ b/be/src/olap/rowset/segment_creator.cpp
@@ -389,6 +389,7 @@ Status SegmentCreator::add_block(const vectorized::Block* 
block) {
         if (_buffer_block.allocated_bytes() > config::write_buffer_size) {
             vectorized::Block block = _buffer_block.to_block();
             RETURN_IF_ERROR(flush_single_block(&block));
+            _buffer_block.clear();
         } else {
             RETURN_IF_ERROR(_buffer_block.merge(*block));
         }
@@ -420,6 +421,7 @@ Status SegmentCreator::flush() {
     if (_buffer_block.rows() > 0) {
         vectorized::Block block = _buffer_block.to_block();
         RETURN_IF_ERROR(flush_single_block(&block));
+        _buffer_block.clear();
     }
     if (_flush_writer == nullptr) {
         return Status::OK();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to