felixwluo opened a new pull request, #48580:
URL: https://github.com/apache/doris/pull/48580

   ### What problem does this PR solve?
   
   Problem Summary:
   
   1. be core
   ```
   (gdb) bt
   #0  doris::CRC32Hash::operator() (this=<optimized out>, x=...) at 
/root/be/src/vec/common/string_ref.h:391
   #1  
phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef, 
char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::HashElement::operator()<doris::StringRef, std::piecewise_construct_t const&, 
std::tuple<doris::StringRef const&>, std::tuple<char* const&> > 
(this=<optimized out>, key=...)
       at /var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:1867
   #2  
phmap::priv::memory_internal::DecomposePairImpl<phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef,
 char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::HashElement, doris::StringRef const&, std::tuple<char* const&> > (f=..., 
p=...) at /var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:751
   #3  
phmap::priv::DecomposePair<phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef,
 char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::HashElement, std::pair<doris::StringRef const, char*>&> (f=..., args=...) at 
/var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:4119
   #4  phmap::priv::FlatHashMapPolicy<doris::StringRef, 
char*>::apply<phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef,
 char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::HashElement, std::pair<doris::StringRef const, char*>&> (f=..., args=...)
       at /var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:4222
   #5  
phmap::priv::hash_policy_traits<phmap::priv::FlatHashMapPolicy<doris::StringRef,
 char*>, 
void>::apply<phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef,
 char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::HashElement, std::pair<doris::StringRef const, char*>&, 
phmap::priv::FlatHashMapPolicy<doris::StringRef, char*> > (f=..., ts=...) at 
/var/local/thirdparty/installed/include/parallel_hashmap/phmap_base.h:548
   #6  
phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef, 
char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::resize (this=0x560c564efe40, 
       new_capacity=<optimized out>) at 
/var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:2019
   #7  0x0000560957eba1b2 in 
phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef, 
char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::prepare_insert (
       this=0x560c564efe40, hashval=4346916887181955022) at 
/var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:2198
   #8  0x0000560957eba0e9 in 
phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef, 
char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::find_or_prepare_insert<doris::StringRef> (this=0x0, key=..., 
hashval=94595109437455) at 
/var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:2186
   #9  0x0000560959640016 in 
phmap::priv::raw_hash_set<phmap::priv::FlatHashMapPolicy<doris::StringRef, 
char*>, DefaultHash<doris::StringRef, void>, phmap::EqualTo<doris::StringRef>, 
doris::vectorized::Allocator_<std::pair<doris::StringRef const, char*> > 
>::lazy_emplace_with_hash<doris::StringRef, PHHashMap<doris::StringRef, char*, 
DefaultHash<doris::StringRef, void>, 
false>::lazy_emplace<doris::vectorized::ArenaKeyHolder&, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 
const&)#1}&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<
 doris::StringRef, char*, DefaultHash<doris::StringRef, void>, false> >&, 
std::pair<doris::StringRef const, char*>*&, unsigned long, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 const&)#1}&)::{lambda(auto:1 const&)#1}>(doris::StringRef 
const&, unsigned long, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, D
 efaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 const&)#1}&) (this=0x560c564efe40, key=..., 
hashval=94595109437455, f=...)
   --Type <RET> for more, q to quit, c to continue without paging--
       at /var/local/thirdparty/installed/include/parallel_hashmap/phmap.h:1534
   #10 PHHashMap<doris::StringRef, char*, DefaultHash<doris::StringRef, void>, 
false>::lazy_emplace<doris::vectorized::ArenaKeyHolder&, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 
const&)#1}&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> >&, 
std::pair<doris::StringRef const, char*>*&, unsigned long, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn con
 st*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 const&)#1}&) (this=0x560c564efe40, key_holder=..., 
hash_value=94595109437455, it=<optimized out>, f=...)
       at /root/be/src/vec/common/hash_table/ph_hash_map.h:177
   #11 
doris::vectorized::ColumnsHashing::columns_hashing_impl::HashMethodBase<doris::vectorized::ColumnsHashing::HashMethodSerialized<std::pair<doris::StringRef
 const, char*>, char*, true>, std::pair<doris::StringRef const, char*>, char*, 
false>::lazy_emplace_impl<PHHashMap<doris::StringRef, char*, 
DefaultHash<doris::StringRef, void>, false>, doris::vectorized::ArenaKeyHolder, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 const&)#1}&>(doris::vectorized::ArenaKeyHolder&, unsigned long, 
doris::vectorized::AggregationMethodSerialized<PHHashM
 ap<doris::StringRef, char*, DefaultHash<doris::StringRef, void>, false> >&, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 const&)#1}&) (key_holder=..., 
       hash_value=94595109437455, data=..., this=<optimized out>, f=...) at 
/root/be/src/vec/common/columns_hashing_impl.h:316
   #12 
doris::vectorized::ColumnsHashing::columns_hashing_impl::HashMethodBase<doris::vectorized::ColumnsHashing::HashMethodSerialized<std::pair<doris::StringRef
 const, char*>, char*, true>, std::pair<doris::StringRef const, char*>, char*, 
false>::lazy_emplace_key<PHHashMap<doris::StringRef, char*, 
DefaultHash<doris::StringRef, void>, false>, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 
const&)#1}&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> >&, unsigned lo
 ng, unsigned long, doris::vectorized::Arena&, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const::{lambda(auto:1 
const&, auto:2 const&)#1}&) (data=..., hash_value=94595109437455, row=0, 
       pool=..., this=<optimized out>, f=...) at 
/root/be/src/vec/common/columns_hashing_impl.h:155
   #13 doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned 
long)::$_0::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef,
 char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) const 
(this=0x7f5ff0c940e0, agg_method=...) at 
/root/be/src/vec/exec/vaggregation_node.cpp:997
   #14 std::__invoke_impl<void, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned long)::$_0, 
doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&>(std::__invoke_other, 
doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned long)::$_0&&, 
doris::vectorized::A--Type <RET> for more, q to quit, c to continue without 
paging--
   ggregationMethodSerialized<PHHashMap<doris::StringRef, char*, 
DefaultHash<doris::StringRef, void>, false> >&) (__f=..., __args=...)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
   #15 
std::__invoke<doris::vectorized::AggregationNode::_emplace_into_hash_table(char**,
 std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned long)::$_0, 
doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> 
>&>(doris::vectorized::AggregationNode::_emplace_into_hash_table(char**, 
std::vector<doris::vectorized::IColumn const*, 
std::allocator<doris::vectorized::IColumn const*> >&, unsigned long)::$_0&&, 
doris::vectorized::AggregationMethodSerialized<PHHashMap<doris::StringRef, 
char*, DefaultHash<doris::StringRef, void>, false> >&) (__fn=..., __args=...)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
   #16 
_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIvEEOZN5doris10vectorized15AggregationNode24_emplace_into_hash_tableEPPcRSt6vectorIPKNS6_7IColumnESaISD_EEmE3$_0RSt7variantIJNS6_27AggregationMethodSerializedI9PHHashMapINS5_9StringRefES8_11DefaultHashISM_vELb0EEEENS6_26AggregationMethodOneNumberIh12FixedHashMapIhS8_28FixedHashMapImplicitZeroCellIhS8_16HashTableNoStateE28FixedHashTableCalculatedSizeISV_E9AllocatorILb1ELb1ELb0EEELb0EEENSR_ItSS_ItS8_ST_ItS8_SU_E24FixedHashTableStoredSizeIS12_ESZ_ELb0EEENSR_IjSL_IjS8_9HashCRC32IjELb0EELb0EEENSR_ImSL_ImS8_S17_ImELb0EELb0EEENS6_30AggregationMethodStringNoCacheI13StringHashMapIS8_SZ_EEENSR_INS6_7UInt128ESL_IS1I_S8_S17_IS1I_ELb0EELb0EEENSR_IjSL_IjS8_14HashMixWrapperIjS18_ELb0EELb0EEENSR_ImSL_ImS8_S1M_ImS1B_ELb0EELb0EEENSR_IS1I_SL_IS1I_S8_S1M_IS1I_S1J_ELb0EELb0EEENS6_37AggregationMethodSingleNullableColumnINSR_IhNS6_26AggregationDataWithNullKeyIS10_EELb0EEEEENS1W_INSR_ItNS1X_IS15_EELb0EEEEENS1W
 
_INSR_IjNS1X_IS19_EELb0EEEEENS1W_INSR_ImNS1X_IS1C_EELb0EEEEENS1W_INSR_IjNS1X_IS1O_EELb0EEEEENS1W_INSR_ImNS1X_IS1R_EELb0EEEEENS1W_INSR_IS1I_NS1X_IS1K_EELb0EEEEENS1W_INSR_IS1I_NS1X_IS1U_EELb0EEEEENS1W_INS1E_INS1X_IS1G_EEEEEENS6_26AggregationMethodKeysFixedIS1C_Lb0EEENS2P_IS1C_Lb1EEENS2P_IS1K_Lb0EEENS2P_IS1K_Lb1EEENS2P_ISL_INS6_7UInt256ES8_S17_IS2U_ELb0EELb0EEENS2P_IS2W_Lb1EEENS2P_IS1R_Lb0EEENS2P_IS1R_Lb1EEENS2P_IS1U_Lb0EEENS2P_IS1U_Lb1EEENS2P_ISL_IS2U_S8_S1M_IS2U_S2V_ELb0EELb0EEENS2P_IS34_Lb1EEEEEEJEEESt16integer_sequenceImJLm0EEEE14__visit_invokeESI_S38_
 (__visitor=..., __vars=...)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:1013
   #17 0x000056095969b7d7 in 
_ZSt10__do_visitINSt8__detail9__variant21__deduce_visit_resultIvEEZN5doris10vectorized15AggregationNode24_emplace_into_hash_tableEPPcRSt6vectorIPKNS5_7IColumnESaISC_EEmE3$_0JRSt7variantIJNS5_27AggregationMethodSerializedI9PHHashMapINS4_9StringRefES7_11DefaultHashISK_vELb0EEEENS5_26AggregationMethodOneNumberIh12FixedHashMapIhS7_28FixedHashMapImplicitZeroCellIhS7_16HashTableNoStateE28FixedHashTableCalculatedSizeIST_E9AllocatorILb1ELb1ELb0EEELb0EEENSP_ItSQ_ItS7_SR_ItS7_SS_E24FixedHashTableStoredSizeIS10_ESX_ELb0EEENSP_IjSJ_IjS7_9HashCRC32IjELb0EELb0EEENSP_ImSJ_ImS7_S15_ImELb0EELb0EEENS5_30AggregationMethodStringNoCacheI13StringHashMapIS7_SX_EEENSP_INS5_7UInt128ESJ_IS1G_S7_S15_IS1G_ELb0EELb0EEENSP_IjSJ_IjS7_14HashMixWrapperIjS16_ELb0EELb0EEENSP_ImSJ_ImS7_S1K_ImS19_ELb0EELb0EEENSP_IS1G_SJ_IS1G_S7_S1K_IS1G_S1H_ELb0EELb0EEENS5_37AggregationMethodSingleNullableColumnINSP_IhNS5_26AggregationDataWithNullKeyISY_EELb0EEEEENS1U_INSP_ItNS1V_IS13_EELb0EEEEENS1U_INSP_IjN
 
S1V_IS17_EELb0EEEEENS1U_INSP_ImNS1V_IS1A_EELb0EEEEENS1U_INSP_IjNS1V_IS1M_EELb0EEEEENS1U_INSP_ImNS1V_IS1P_EELb0EEEEENS1U_INSP_IS1G_NS1V_IS1I_EELb0EEEEENS1U_INSP_IS1G_NS1V_IS1S_EELb0EEEEENS1U_INS1C_INS1V_IS1E_EEEEEENS5_26AggregationMethodKeysFixedIS1A_Lb0EEENS2N_IS1A_Lb1EEENS2N_IS1I_Lb0EEENS2N_IS1I_Lb1EEENS2N_ISJ_INS5_7UInt256ES7_S15_IS2S_ELb0EELb0EEENS2N_IS2U_Lb1EEENS2N_IS1P_Lb0EEENS2N_IS1P_Lb1EEENS2N_IS1S_Lb0EEENS2N_IS1S_Lb1EEENS2N_ISJ_IS2S_S7_S1K_IS2S_S2T_ELb0EELb0EEENS2N_IS32_Lb1EEEEEEEDcOT0_DpOT1_
 (__visitor=..., __variants=...)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:1714
   #18 
_ZSt5visitIZN5doris10vectorized15AggregationNode24_emplace_into_hash_tableEPPcRSt6vectorIPKNS1_7IColumnESaIS8_EEmE3$_0JRSt7variantIJNS1_27AggregationMethodSerializedI9PHHashMapINS0_9StringRefES3_11DefaultHashISG_vELb0EEEENS1_26AggregationMethodOneNumberIh12FixedHashMapIhS3_28FixedHashMapImplicitZeroCellIhS3_16HashTableNoStateE28FixedHashTableCalculatedSizeISP_E9AllocatorILb1ELb1ELb0EEELb0EEENSL_ItSM_ItS3_SN_ItS3_SO_E24FixedHashTableStoredSizeISW_EST_ELb0EEENSL_IjSF_IjS3_9HashCRC32IjELb0EELb0EEENSL_ImSF_ImS3_S11_ImELb0EELb0EEENS1_30AggregationMethodStringNoCacheI13StringHashMapIS3_ST_EEENSL_INS1_7UInt128ESF_IS1C_S3_S11_IS1C_ELb0EELb0EEENSL_IjSF_IjS3_14HashMixWrapperIjS12_ELb0EELb0EEENSL_ImSF_ImS3_S1G_ImS15_ELb0EELb0EEENSL_IS1C_SF_IS1C_S3_S1G_IS1C_S1D_ELb0EELb0EEENS1_37AggregationMethodSingleNullableColumnINSL_IhNS1_26AggregationDataWithNullKeyISU_EELb0EEEEENS1Q_INSL_ItNS1R_ISZ_EELb0EEEEENS1Q_INSL_IjNS1R_IS13_EELb0EEEEENS1Q_INSL_ImNS1R_IS16_EELb0EEEEENS1Q_INSL_IjNS1R_IS1I_EELb0E
 
EEEENS1Q_INSL_ImNS1R_IS1L_EELb0EEEEENS1Q_INSL_IS1C_NS1R_IS1E_EELb0EEEEENS1Q_INSL_IS1C_NS1R_IS1O_EELb0EEEEENS1Q_INS18_INS1R_IS1A_EEEEEENS1_26AggregationMethodKeysFixedIS16_Lb0EEENS2J_IS16_Lb1EEENS2J_IS1E_Lb0EEENS2J_IS1E_Lb1EEENS2J_ISF_INS1_7UInt256ES3_S11_IS2O_ELb0EELb0EEENS2J_IS2Q_Lb1EEENS2J_IS1L_Lb0EEENS2J_IS1L_Lb1EEENS2J_IS1O_Lb0EEENS2J_IS1O_Lb1EEENS2J_ISF_IS2O_S3_S1G_IS2O_S2P_ELb0EELb0EEENS2J_IS2Y_Lb1EEEEEEEDcOT_DpOT0_
 (__visitor=..., __variants=...)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:1764
   #19 doris::vectorized::AggregationNode::_emplace_into_hash_table 
(this=0x560ae7fbd200, places=<optimized out>, key_columns=..., num_rows=1)
   --Type <RET> for more, q to quit, c to continue without paging--
       at /root/be/src/vec/exec/vaggregation_node.cpp:924
   #20 
doris::vectorized::AggregationNode::_merge_with_serialized_key_helper<false, 
false> (this=0x560ae7fbd200, block=0x560bec646cf0)
       at /root/be/src/vec/exec/vaggregation_node.h:1105
   #21 0x000056095962ea04 in 
doris::vectorized::AggregationNode::_merge_with_serialized_key (this=0x80, 
block=0x5608a3e5400f)
       at /root/be/src/vec/exec/vaggregation_node.cpp:1662
   #22 0x00005609596daefb in std::__invoke_impl<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*&)(doris::vectorized::Block*), 
doris::vectorized::AggregationNode*&, doris::vectorized::Block*> 
(__f=<optimized out>, __t=<optimized out>, __args=<optimized out>)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
   #23 std::__invoke_r<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*&)(doris::vectorized::Block*), 
doris::vectorized::AggregationNode*&, doris::vectorized::Block*> 
(__fn=<optimized out>, __args=<optimized out>, __args=<optimized out>)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
   #24 std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)>::__call<doris::Status, 
doris::vectorized::Block*&&, 0ul, 
1ul>(std::tuple<doris::vectorized::Block*&&>&&, std::_Index_tuple<0ul, 1ul>) 
(this=<optimized out>, __args=...)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570
   #25 std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)>::operator()<doris::vectorized::Block*>(doris::vectorized::Block*&&)
 (this=<optimized out>, 
       __args=<optimized out>) at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629
   #26 std::__invoke_impl<doris::Status, std::_Bind_result<doris::Status, 
doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)>&, 
doris::vectorized::Block*>(std::__invoke_other, 
std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)>&, 
doris::vectorized::Block*&&) (__f=..., __args=<optimized out>)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
   #27 std::__invoke_r<doris::Status, std::_Bind_result<doris::Status, 
doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)>&, 
doris::vectorized::Block*>(std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)>&, 
doris::vectorized::Block*&&) (__fn=..., __args=<optimized out>)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
   #28 std::_Function_handler<doris::Status (doris::vectorized::Block*), 
std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>))(doris::vectorized::Block*)> >::_M_invoke(std::_Any_data 
const&, doris::vectorized::Block*&&) (__functor=..., __args=<optimized out>)
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
   #29 0x00005609596309f9 in std::function<doris::Status 
(doris::vectorized::Block*)>::operator()(doris::vectorized::Block*) const 
(this=0x80, 
       __args=0x560bec646cf0) at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
   #30 doris::vectorized::AggregationNode::sink (this=0x560ae7fbd200, 
state=<optimized out>, in_block=0x560bec646cf0, eos=false)
       at /root/be/src/vec/exec/vaggregation_node.cpp:602
   #31 0x000056095cf2dac0 in 
doris::pipeline::StreamingOperator<doris::pipeline::AggSinkOperatorBuilder>::sink
 (this=<optimized out>, 
       state=0x5608a3e5400f, in_block=0xc6a4a7935bd1e995, 
source_state=<optimized out>) at /root/be/src/pipeline/exec/operator.h:336
   #32 0x000056095cf5200c in doris::pipeline::PipelineTask::execute 
(this=0x560b73e00580, eos=0x7f5ff0c944d7)
       at /root/be/src/pipeline/pipeline_task.cpp:282
   #33 0x000056095cf5acea in doris::pipeline::TaskScheduler::_do_work 
(this=0x560966cd8770, index=11)
       at /root/be/src/pipeline/task_scheduler.cpp:268
   #34 0x000056095578f33f in doris::ThreadPool::dispatch_thread 
(this=0x56096a246700) at /root/be/src/util/threadpool.cpp:533
   #35 0x00005609557852bc in std::function<void ()>::operator()() const 
(this=0x0)
   --Type <RET> for more, q to quit, c to continue without paging--
       at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
   #36 doris::Thread::supervise_thread (arg=0x56096ac717a0) at 
/root/be/src/util/thread.cpp:498
   #37 0x00007f6081c5eea5 in start_thread () from /lib64/libpthread.so.0
   #38 0x00007f608268d9fd in clone () from /lib64/libc.so.6
   ```
   
   2. problem
   `When handling aggregate queries, the BE server may crash. The stack trace 
shows that the crash occurs in the doris::CRC32Hash::operator() function when 
calculating the hash value of a StringRef object. This issue is more likely to 
be triggered when the size of the StringRef is not a multiple of 8 (e.g., 15 
bytes).`
   
   3. cause analysis
   through GDB debugging, we found:
    3-1. the crash occurs during the hash table resize process, when 
calculating the hash value of a StringRef
    3-2. he issue is that the size of the StringRef is 15 bytes, and the data 
pointer is valid
    `doris::vectorized::UInt64 word = 
unaligned_load<doris::vectorized::UInt64>(end - 8);`
    `when the size of the StringRef is 15, the code attempts to read 8 bytes 
starting from data+7. Although these bytes exist in memory, such unaligned 
memory access may cause a crash on some architectures`
    
    4. GDB
   ```
   0x5609af33c000: 0xea    0xa1    0xae    0x0d    0x00    0x00    0x00    0x00
   0x5609af33c008: 0x03    0x00    0x00    0x00    0x55    0x54    0x41    0x00
   ```
   the 8 bytes starting from data+7 span across two memory lines, which may 
cause unaligned access issues
   
   ### Release note
   
   None
   
   ### Check List (For Author)
   
   - Test <!-- At least one of them must be included. -->
       - [ ] Regression test
       - [ ] Unit Test
       - [ ] Manual test (add detailed scripts or steps below)
       - [ ] No need to test or manual test. Explain why:
           - [ ] This is a refactor/code format and no logic has been changed.
           - [ ] Previous test can cover this change.
           - [ ] No code files have been changed.
           - [ ] Other reason <!-- Add your reason?  -->
   
   - Behavior changed:
       - [ ] No.
       - [ ] Yes. <!-- Explain the behavior change -->
   
   - Does this need documentation?
       - [ ] No.
       - [ ] Yes. <!-- Add document PR link here. eg: 
https://github.com/apache/doris-website/pull/1214 -->
   
   ### Check List (For Reviewer who merge this PR)
   
   - [ ] Confirm the release note
   - [ ] Confirm test cases
   - [ ] Confirm document
   - [ ] Add branch pick label <!-- Add branch pick label that this PR should 
merge into -->
   
   


-- 
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]

Reply via email to