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

mrhhsg 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 31b3afa2c86 [fix](pipeline) fix exception safety issue in 
MultiCastDataStreamer (#36814)
31b3afa2c86 is described below

commit 31b3afa2c86c493f9b1c21e966f6d31de5af7bdd
Author: Jerry Hu <mrh...@gmail.com>
AuthorDate: Mon Jul 15 10:32:20 2024 +0800

    [fix](pipeline) fix exception safety issue in MultiCastDataStreamer (#36814)
    
    ## Proposed changes
    
    pick #36748
    
    ```cpp
    RETURN_IF_ERROR(vectorized::MutableBlock(block).merge(*pos_to_pull->_block))
    ```
    this line may throw an exception(cannot allocate)
    
    ```
    *** Query id: b7b80bfd76cc42a5-a9916f8364d5a4d3 ***
    *** tablet id: 0 ***
    *** Aborted at 1719187603 (unix time) try "date -d @1719187603" if you are 
using GNU date ***
    *** Current BE git commitID: a8c48f5328 ***
    *** SIGSEGV address not mapped to object (@0x47) received by PID 1197117 
(TID 1197376 OR 0x7f49a25e4640) from PID 71; stack trace: ***
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/root/doris_branch-2.0/doris/be/src/common/signal_handler.h:417
     1# os::Linux::chained_handler(int, siginfo_t*, void*) in 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
     2# JVM_handle_linux_signal in 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
     3# signalHandler(int, siginfo_t*, void*) in 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
     4# 0x00007F4ABB927520 in /lib/x86_64-linux-gnu/libc.so.6
     5# 
std::default_delete<doris::vectorized::Block>::operator()(doris::vectorized::Block*)
 const at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:85
     6# doris::pipeline::MultiCastDataStreamer::close_sender(int) at 
/root/doris_branch-2.0/doris/be/src/pipeline/exec/multi_cast_data_streamer.cpp:60
     7# 
doris::pipeline::MultiCastDataStreamerSourceOperator::close(doris::RuntimeState*)
 at 
/root/doris_branch-2.0/doris/be/src/pipeline/exec/multi_cast_data_stream_source.cpp:120
     8# doris::pipeline::PipelineTask::close() at 
/root/doris_branch-2.0/doris/be/src/pipeline/pipeline_task.cpp:334
     9# 
doris::pipeline::TaskScheduler::_try_close_task(doris::pipeline::PipelineTask*, 
doris::pipeline::PipelineTaskState) at 
/root/doris_branch-2.0/doris/be/src/pipeline/task_scheduler.cpp:353
    10# doris::pipeline::TaskScheduler::_do_work(unsigned long) in 
/mnt/disk1/STRESS_ENV/be/lib/doris_be
    11# doris::ThreadPool::dispatch_thread() in 
/mnt/disk1/STRESS_ENV/be/lib/doris_be
    12# doris::Thread::supervise_thread(void*) at 
/root/doris_branch-2.0/doris/be/src/util/thread.cpp:499
    13# start_thread at ./nptl/pthread_create.c:442
    14# 0x00007F4ABBA0B850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
    ```
    
    <!--Describe your changes.-->
---
 be/src/pipeline/exec/multi_cast_data_streamer.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/be/src/pipeline/exec/multi_cast_data_streamer.cpp 
b/be/src/pipeline/exec/multi_cast_data_streamer.cpp
index 175a21469b8..1b128ab6ca3 100644
--- a/be/src/pipeline/exec/multi_cast_data_streamer.cpp
+++ b/be/src/pipeline/exec/multi_cast_data_streamer.cpp
@@ -41,9 +41,9 @@ void MultiCastDataStreamer::pull(int sender_idx, 
doris::vectorized::Block* block
             pos_to_pull++;
             _multi_cast_blocks.pop_front();
         } else {
-            pos_to_pull->_used_count--;
             pos_to_pull->_block->create_same_struct_block(0)->swap(*block);
             (void)vectorized::MutableBlock(block).merge(*pos_to_pull->_block);
+            pos_to_pull->_used_count--;
             pos_to_pull++;
         }
     }


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

Reply via email to