Fuzz introspector: phashmap_fuzz
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
114 114 1 :

['phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::drop_deletes_without_resize()']

114 114 phmap::priv::raw_hash_set ,phmap::Hash ,phmap::EqualTo ,std::__1::allocator >>::rehash_and_grow_if_necessary() call site: 00000 /src/parallel-hashmap/./parallel_hashmap/phmap.h:2124
4 4 1 :

['void phmap::priv::SanitizerPoisonObject >(phmap::priv::map_slot_type const*)']

4 4 phmap::priv::raw_hash_set ,phmap::Hash ,phmap::EqualTo ,std::__1::allocator >>::set_ctrl(unsignedlong,signedchar) call site: 00000 /src/parallel-hashmap/./parallel_hashmap/phmap.h:2255
0 0 None 41 47 phmap::priv::raw_hash_set ,std::__1::allocator >,std::__1::basic_string ,std::__1::allocator >>,phmap::Hash ,std::__1::allocator >>,phmap::EqualTo ,std::__1::allocator >>,std::__1::allocator ,std::__1::allocator >const,std::__1::basic_string ,std::__1::allocator >>>>::destroy_slots() call site: 00000 /src/parallel-hashmap/./parallel_hashmap/phmap.h:2014
0 0 1 :

['_ZNSt3__14swapIPKN5phmap4priv12raw_hash_setINS2_17FlatHashMapPolicyIjiEENS1_4HashIjEENS1_7EqualToIjEENS_9allocatorINS_4pairIKjiEEEEEEEENS_9enable_ifIXaasr21is_move_constructibleIT_EE5valuesr18is_move_assignableISJ_EE5valueEvE4typeERSJ_SM_']

0 98 phmap::priv::operator==(phmap::priv::raw_hash_set ,phmap::Hash ,phmap::EqualTo ,std::__1::allocator >>const&,phmap::priv::raw_hash_set ,phmap::Hash ,phmap::EqualTo ,std::__1::allocator >>const&) call site: 00000 /src/parallel-hashmap/./parallel_hashmap/phmap.h:1829

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 serialise_test(unsigned char const*, unsigned long) [function] [call site] 00001
2 phmap::flat_hash_map , phmap::EqualTo , std::__1::allocator > >::flat_hash_map() [function] [call site] 00002
3 phmap::priv::raw_hash_map , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::raw_hash_map() [function] [call site] 00003
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::raw_hash_set() [function] [call site] 00004
5 phmap::priv::EmptyGroup() [function] [call site] 00005
2 std::__1::pair , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::iterator, bool> phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::insert , 0, 0, (std::__1::pair *)0>(std::__1::pair &&) [function] [call site] 00006
3 std::__1::pair , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::iterator, bool> phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::emplace , 0>(std::__1::pair &&) [function] [call site] 00007
4 _ZN5phmap4priv18hash_policy_traitsINS0_17FlatHashMapPolicyIjiEEvE5applyINS0_12raw_hash_setIS3_NS_4HashIjEENS_7EqualToIjEENSt3__19allocatorINSB_4pairIKjiEEEEE19EmplaceDecomposableEJSF_ES3_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSK_DpOSL_ [function] [call site] 00008
5 _ZN5phmap4priv17FlatHashMapPolicyIjiE5applyINS0_12raw_hash_setIS2_NS_4HashIjEENS_7EqualToIjEENSt3__19allocatorINS9_4pairIKjiEEEEE19EmplaceDecomposableEJSD_EEEDTclsr5phmap4privE13DecomposePairclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSH_DpOSI_ [function] [call site] 00009
6 _ZN5phmap4priv13DecomposePairINS0_12raw_hash_setINS0_17FlatHashMapPolicyIjiEENS_4HashIjEENS_7EqualToIjEENSt3__19allocatorINS9_4pairIKjiEEEEE19EmplaceDecomposableEJSD_EEEDTclsr15memory_internalE17DecomposePairImplclsr3stdE7forwardIT_Efp_Ecl8PairArgsspclsr3stdE7forwardIT0_Efp0_EEEEOSH_DpOSI_ [function] [call site] 00010
7 std::__1::pair , std::__1::tuple > phmap::priv::PairArgs (std::__1::pair &&) [function] [call site] 00011
8 std::__1::pair , std::__1::tuple > phmap::priv::PairArgs (unsigned int const&&, int&&) [function] [call site] 00012
7 _ZN5phmap4priv15memory_internal17DecomposePairImplINS0_12raw_hash_setINS0_17FlatHashMapPolicyIjiEENS_4HashIjEENS_7EqualToIjEENSt3__19allocatorINSA_4pairIKjiEEEEE19EmplaceDecomposableEOSD_NSA_5tupleIJOiEEEEEDTclclsr3stdE7declvalIT_EEclsr3stdE7declvalIRKT0_EEL_ZNSA_L19piecewise_constructEEclsr3stdE7declvalINSJ_IJSN_EEEEEclsr3stdE7declvalIT1_EEEEOSM_NSC_ISQ_SR_EE [function] [call site] 00013
8 std::__1::pair , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::iterator, bool> phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::EmplaceDecomposable::operator() , std::__1::tuple >(unsigned int const&, std::__1::piecewise_construct_t const&, std::__1::tuple &&, std::__1::tuple &&) const [function] [call site] 00014
9 unsigned long phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::hash (unsigned int const&) const [function] [call site] 00015
10 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::hash_ref() const [function] [call site] 00016
2 phmap::BinaryOutputArchive::BinaryOutputArchive(char const*) [function] [call site] 00017
2 bool phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::phmap_dump (phmap::BinaryOutputArchive&) const [function] [call site] 00018
3 phmap::BinaryOutputArchive::saveBinary(void const*, unsigned long) [function] [call site] 00019
3 phmap::BinaryOutputArchive::saveBinary(void const*, unsigned long) [function] [call site] 00020
3 phmap::BinaryOutputArchive::saveBinary(void const*, unsigned long) [function] [call site] 00021
3 phmap::BinaryOutputArchive::saveBinary(void const*, unsigned long) [function] [call site] 00022
3 phmap::BinaryOutputArchive::saveBinary(void const*, unsigned long) [function] [call site] 00023
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::growth_left() const [function] [call site] 00024
3 phmap::BinaryOutputArchive::saveBinary(void const*, unsigned long) [function] [call site] 00025
2 phmap::flat_hash_map , phmap::EqualTo , std::__1::allocator > >::flat_hash_map() [function] [call site] 00026
2 phmap::BinaryInputArchive::BinaryInputArchive(char const*) [function] [call site] 00027
2 bool phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::phmap_load (phmap::BinaryInputArchive&) [function] [call site] 00028
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::raw_hash_set() [function] [call site] 00029
3 phmap::BinaryInputArchive::loadBinary(void*, unsigned long) [function] [call site] 00030
3 phmap::BinaryInputArchive::loadBinary(void*, unsigned long) [function] [call site] 00031
3 phmap::BinaryInputArchive::loadBinary(void*, unsigned long) [function] [call site] 00032
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::initialize_slots(unsigned long) [function] [call site] 00033
4 __assert_fail [call site] 00034
4 phmap::priv::Sample() [function] [call site] 00035
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::MakeLayout(unsigned long) [function] [call site] 00036
5 phmap::priv::IsValidCapacity(unsigned long) [function] [call site] 00037
5 __assert_fail [call site] 00038
5 phmap::priv::Layout >::Layout(unsigned long, unsigned long) [function] [call site] 00039
6 phmap::priv::internal_layout::LayoutImpl >, phmap::integer_sequence , phmap::integer_sequence >::LayoutImpl(unsigned long, unsigned long) [function] [call site] 00040
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::alloc_ref() [function] [call site] 00041
4 phmap::priv::internal_layout::LayoutImpl >, phmap::integer_sequence , phmap::integer_sequence >::AllocSize() const [function] [call site] 00042
5 unsigned long phmap::priv::internal_layout::LayoutImpl >, phmap::integer_sequence , phmap::integer_sequence >::Offset<1ul, 0>() const [function] [call site] 00043
6 unsigned long phmap::priv::internal_layout::LayoutImpl >, phmap::integer_sequence , phmap::integer_sequence >::Offset<0ul, 0>() const [function] [call site] 00044
6 phmap::priv::internal_layout::adl_barrier::Align(unsigned long, unsigned long) [function] [call site] 00045
4 _ZNK5phmap4priv15internal_layout10LayoutImplINSt3__15tupleIJaNS0_13map_slot_typeIjiEEEEENS_16integer_sequenceImJLm0ELm1EEEES9_E7PointerILm0EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ES7_E4typeESG_E4typeEPSD_ [function] [call site] 00046
5 __assert_fail [call site] 00047
5 unsigned long phmap::priv::internal_layout::LayoutImpl >, phmap::integer_sequence , phmap::integer_sequence >::Offset<0ul, 0>() const [function] [call site] 00048
4 _ZNK5phmap4priv15internal_layout10LayoutImplINSt3__15tupleIJaNS0_13map_slot_typeIjiEEEEENS_16integer_sequenceImJLm0ELm1EEEES9_E7PointerILm1EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ES7_E4typeESG_E4typeEPSD_ [function] [call site] 00049
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::reset_ctrl(unsigned long) [function] [call site] 00050
5 phmap::priv::SanitizerPoisonMemoryRegion(void const*, unsigned long) [function] [call site] 00051
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::reset_growth_left(unsigned long) [function] [call site] 00052
5 phmap::priv::CapacityToGrowth(unsigned long) [function] [call site] 00053
6 phmap::priv::IsValidCapacity(unsigned long) [function] [call site] 00054
6 __assert_fail [call site] 00055
4 phmap::priv::HashtablezInfoHandle::RecordStorageChanged(unsigned long, unsigned long) [function] [call site] 00056
3 phmap::BinaryInputArchive::loadBinary(void*, unsigned long) [function] [call site] 00057
3 phmap::BinaryInputArchive::loadBinary(void*, unsigned long) [function] [call site] 00058
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::growth_left() [function] [call site] 00059
3 phmap::BinaryInputArchive::loadBinary(void*, unsigned long) [function] [call site] 00060
2 phmap::priv::operator==(phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > > const&, phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > > const&) [function] [call site] 00061
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::size() const [function] [call site] 00062
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::capacity() const [function] [call site] 00063
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::begin() const [function] [call site] 00064
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::begin() [function] [call site] 00065
5 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::iterator_at(unsigned long) [function] [call site] 00066
6 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::iterator::iterator(signed char*, phmap::priv::map_slot_type *) [function] [call site] 00067
5 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::iterator::skip_empty_or_deleted() [function] [call site] 00068
6 phmap::priv::IsEmptyOrDeleted(signed char) [function] [call site] 00069
6 phmap::priv::GroupSse2Impl::GroupSse2Impl(signed char const*) [function] [call site] 00070
3 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::has_element(std::__1::pair const&) const [function] [call site] 00071
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::hash_ref() const [function] [call site] 00072
4 _ZN5phmap4priv18hash_policy_traitsINS0_17FlatHashMapPolicyIjiEEvE5applyINS0_12raw_hash_setIS3_NS_4HashIjEENS_7EqualToIjEENSt3__19allocatorINSB_4pairIKjiEEEEE11HashElementEJRKSF_ES3_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSM_DpOSN_ [function] [call site] 00073
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::has_element(std::__1::pair const&, unsigned long) const [function] [call site] 00074
5 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::probe(unsigned long) const [function] [call site] 00075
6 phmap::priv::H1(unsigned long, signed char const*) [function] [call site] 00076
5 phmap::priv::probe_seq<16ul>::offset() const [function] [call site] 00077
5 phmap::priv::H2(unsigned long) [function] [call site] 00078
5 phmap::priv::probe_seq<16ul>::offset(unsigned long) const [function] [call site] 00079
5 decltype (phmap::priv::FlatHashMapPolicy ::element({parm#1})) phmap::priv::hash_policy_traits , void>::element >(phmap::priv::map_slot_type *) [function] [call site] 00080
6 phmap::priv::FlatHashMapPolicy ::element(phmap::priv::map_slot_type *) [function] [call site] 00081
5 phmap::priv::GroupSse2Impl::MatchEmpty() const [function] [call site] 00082
6 phmap::priv::GroupSse2Impl::Match(unsigned char) const [function] [call site] 00083
7 phmap::priv::BitMask ::BitMask(unsigned int) [function] [call site] 00084
5 phmap::priv::probe_seq<16ul>::next() [function] [call site] 00085
5 phmap::priv::probe_seq<16ul>::getindex() const [function] [call site] 00086
5 __assert_fail [call site] 00087
2 unlink [call site] 00088
2 phmap::BinaryInputArchive::~BinaryInputArchive() [function] [call site] 00089
2 unlink [call site] 00090
2 phmap::flat_hash_map , phmap::EqualTo , std::__1::allocator > >::~flat_hash_map() [function] [call site] 00091
3 phmap::priv::raw_hash_map , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::~raw_hash_map() [function] [call site] 00092
4 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::~raw_hash_set() [function] [call site] 00093
5 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::destroy_slots() [function] [call site] 00094
6 phmap::priv::IsFull(signed char) [function] [call site] 00095
6 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::alloc_ref() [function] [call site] 00096
6 void phmap::priv::hash_policy_traits , void>::destroy > >(std::__1::allocator >*, phmap::priv::map_slot_type *) [function] [call site] 00097
7 void phmap::priv::FlatHashMapPolicy ::destroy > >(std::__1::allocator >*, phmap::priv::map_slot_type *) [function] [call site] 00098
8 void phmap::priv::map_slot_policy ::destroy > >(std::__1::allocator >*, phmap::priv::map_slot_type *) [function] [call site] 00099
9 void phmap::allocator_traits > >::destroy >(std::__1::allocator >&, std::__1::pair *) [function] [call site] 00100
10 _ZN5phmap16allocator_traitsINSt3__19allocatorINS1_4pairIKjiEEEEE12destroy_implIS6_NS3_IjiEEEEDTclsr3std16allocator_traitsIT_EE7destroyfp0_fp1_EEiRSA_PT0_ [function] [call site] 00101
6 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::MakeLayout(unsigned long) [function] [call site] 00102
6 phmap::priv::SanitizerUnpoisonMemoryRegion(void const*, unsigned long) [function] [call site] 00103
6 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::alloc_ref() [function] [call site] 00104
6 phmap::priv::internal_layout::LayoutImpl >, phmap::integer_sequence , phmap::integer_sequence >::AllocSize() const [function] [call site] 00105
6 phmap::priv::EmptyGroup() [function] [call site] 00106
6 phmap::priv::raw_hash_set , phmap::Hash , phmap::EqualTo , std::__1::allocator > >::growth_left() [function] [call site] 00107
5 __clang_call_terminate [call site] 00108
6 __cxa_begin_catch [call site] 00109
1 test_assignments(unsigned char const*, unsigned long) [function] [call site] 00110
2 phmap::flat_hash_map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, phmap::Hash , std::__1::allocator > >, phmap::EqualTo , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::flat_hash_map() [function] [call site] 00111
2 phmap::priv::raw_hash_set , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >, phmap::Hash , std::__1::allocator > >, phmap::EqualTo , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::begin() [function] [call site] 00112
2 phmap::flat_hash_map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, phmap::Hash , std::__1::allocator > >, phmap::EqualTo , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::~flat_hash_map() [function] [call site] 00113