You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/10/15 02:39:32 UTC

[doris] branch master updated: [Fix](agg) fix bitmap agg core dump when phmap pointer assert alignment (#13381)

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

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 4bc33a54a1 [Fix](agg) fix bitmap agg core dump when phmap pointer assert alignment (#13381)
4bc33a54a1 is described below

commit 4bc33a54a1d3485b07c5b13fcd18d27763b1194c
Author: zhangstar333 <87...@users.noreply.github.com>
AuthorDate: Sat Oct 15 10:39:23 2022 +0800

    [Fix](agg) fix bitmap agg core dump when phmap pointer assert alignment (#13381)
---
 be/src/vec/exec/vaggregation_node.cpp | 9 ++++++++-
 be/src/vec/exec/vaggregation_node.h   | 1 +
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/be/src/vec/exec/vaggregation_node.cpp b/be/src/vec/exec/vaggregation_node.cpp
index 9469242271..4f53e2633e 100644
--- a/be/src/vec/exec/vaggregation_node.cpp
+++ b/be/src/vec/exec/vaggregation_node.cpp
@@ -459,6 +459,7 @@ Status AggregationNode::open(RuntimeState* state) {
     // this could cause unable to get JVM
     if (_probe_expr_ctxs.empty()) {
         _create_agg_status(_agg_data.without_key);
+        _agg_data_created_without_key = true;
     }
     bool eos = false;
     Block block;
@@ -707,7 +708,13 @@ void AggregationNode::_update_memusage_without_key() {
 }
 
 void AggregationNode::_close_without_key() {
-    _destroy_agg_status(_agg_data.without_key);
+    //because prepare maybe failed, and couldn't create agg data.
+    //but finally call close to destory agg data, if agg data has bitmapValue
+    //will be core dump, it's not initialized
+    if (_agg_data_created_without_key) {
+        _destroy_agg_status(_agg_data.without_key);
+        _agg_data_created_without_key = false;
+    }
     release_tracker();
 }
 
diff --git a/be/src/vec/exec/vaggregation_node.h b/be/src/vec/exec/vaggregation_node.h
index 7b41b570c3..8223ae4232 100644
--- a/be/src/vec/exec/vaggregation_node.h
+++ b/be/src/vec/exec/vaggregation_node.h
@@ -806,6 +806,7 @@ private:
 
     bool _should_limit_output = false;
     bool _reach_limit = false;
+    bool _agg_data_created_without_key = false;
 
     PODArray<AggregateDataPtr> _places;
     std::vector<char> _deserialize_buffer;


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