Fuzz introspector: fuzz_implementations
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
2 2 1 :

['abort']

2 2 get_runtime_supported_implementations() call site: 00000 /src/simdjson/fuzz/supported_implementations.h:25
0 7 2 :

['simdjson::internal::dom_parser_implementation::allocate(unsigned long, unsigned long)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const']

0 7 simdjson::dom::parser::allocate(unsignedlong,unsignedlong) call site: 00000 /src/simdjson/include/simdjson/dom/parser-inl.h:204
0 0 None 0 133 simdjson::internal::adjusted_mantissasimdjson::internal::compute_float >(simdjson::internal::decimal&) call site: 00000 /src/simdjson/src/from_chars.cpp:487
0 0 None 0 116 simdjson::internal::adjusted_mantissasimdjson::internal::compute_float >(simdjson::internal::decimal&) call site: 00000 /src/simdjson/src/from_chars.cpp:508
0 0 None 0 95 simdjson::internal::adjusted_mantissasimdjson::internal::compute_float >(simdjson::internal::decimal&) call site: 00000 /src/simdjson/src/from_chars.cpp:521
0 0 None 0 0 simdjson::dom::document::allocate(unsignedlong) call site: 00000 /src/simdjson/include/simdjson/dom/document-inl.h:30
0 0 None 0 0 simdjson::dom::parser::ensure_capacity(simdjson::dom::document&,unsignedlong) call site: 00000 /src/simdjson/include/simdjson/dom/parser-inl.h:236
0 0 None 0 0 simdjson::internal::decimal_right_shift(simdjson::internal::decimal&,unsignedint) call site: 00000 /src/simdjson/src/from_chars.cpp:420
0 0 None 0 0 simdjson::internal::detect_supported_architectures() call site: 00000 /src/simdjson/src/internal/isadetection.h:179

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 __cxa_guard_acquire [call site] 00001
1 get_runtime_supported_implementations() [function] [call site] 00002
2 simdjson::get_available_implementations() [function] [call site] 00003
3 __cxa_guard_acquire [call site] 00004
3 __cxa_guard_release [call site] 00005
2 simdjson::internal::available_implementation_list::begin() const [function] [call site] 00006
3 simdjson::internal::get_available_implementation_pointers() [function] [call site] 00007
4 __cxa_guard_acquire [call site] 00008
4 simdjson::internal::get_icelake_singleton() [function] [call site] 00009
5 __cxa_guard_acquire [call site] 00010
5 __cxa_guard_release [call site] 00011
4 simdjson::internal::get_haswell_singleton() [function] [call site] 00012
5 __cxa_guard_acquire [call site] 00013
5 __cxa_guard_release [call site] 00014
4 simdjson::internal::get_westmere_singleton() [function] [call site] 00015
5 __cxa_guard_acquire [call site] 00016
5 __cxa_guard_release [call site] 00017
4 simdjson::internal::get_fallback_singleton() [function] [call site] 00018
5 __cxa_guard_acquire [call site] 00019
5 __cxa_guard_release [call site] 00020
4 __cxa_guard_release [call site] 00021
2 simdjson::internal::available_implementation_list::end() const [function] [call site] 00022
3 simdjson::internal::get_available_implementation_pointers() [function] [call site] 00023
2 simdjson::implementation::supported_by_runtime_system() const [function] [call site] 00024
3 simdjson::internal::detect_supported_architectures() [function] [call site] 00025
4 simdjson::internal::cpuid(unsigned int*, unsigned int*, unsigned int*, unsigned int*) [function] [call site] 00026
4 simdjson::internal::xgetbv() [function] [call site] 00027
4 simdjson::internal::cpuid(unsigned int*, unsigned int*, unsigned int*, unsigned int*) [function] [call site] 00028
2 abort [call site] 00029
1 __cxa_atexit [call site] 00030
1 __cxa_guard_release [call site] 00031
1 abort [call site] 00032
1 __cxa_guard_abort [call site] 00033
1 simdjson::get_active_implementation() [function] [call site] 00034
2 __cxa_guard_acquire [call site] 00035
2 __cxa_guard_release [call site] 00036
2 __cxa_guard_acquire [call site] 00037
2 simdjson::internal::atomic_ptr<simdjson::implementation const>::atomic_ptr(simdjson::implementation const*) [function] [call site] 00038
2 __cxa_guard_release [call site] 00039
1 simdjson::internal::atomic_ptr<simdjson::implementation const>::operator=(simdjson::implementation const*) [function] [call site] 00040
1 simdjson::dom::parser::parse(unsigned char const*, unsigned long, bool) & [function] [call site] 00041
2 simdjson::dom::parser::parse_into_document(simdjson::dom::document&, unsigned char const*, unsigned long, bool) & [function] [call site] 00042
3 simdjson::dom::parser::ensure_capacity(simdjson::dom::document&, unsigned long) [function] [call site] 00043
4 simdjson::dom::document::capacity() const [function] [call site] 00044
4 simdjson::dom::document::capacity() const [function] [call site] 00045
4 simdjson::dom::document::allocate(unsigned long) [function] [call site] 00046
4 simdjson::dom::parser::allocate(unsigned long, unsigned long) [function] [call site] 00047
5 simdjson::internal::dom_parser_implementation::allocate(unsigned long, unsigned long) [function] [call site] 00048
5 simdjson::get_active_implementation() [function] [call site] 00049
5 simdjson::internal::atomic_ptr<simdjson::implementation const>::operator->() [function] [call site] 00050
5 __clang_call_terminate [call site] 00051
6 __cxa_begin_catch [call site] 00052
3 simdjson::internal::allocate_padded_buffer(unsigned long) [function] [call site] 00053
3 memcmp [call site] 00054
3 simdjson::dom::document::root() const [function] [call site] 00055
1 simdjson::dom::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, simdjson::dom::element) [function] [call site] 00056
2 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::string_builder() [function] [call site] 00057
3 simdjson::internal::base_formatter<simdjson::internal::mini_formatter>::base_formatter() [function] [call site] 00058
2 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::element) [function] [call site] 00059
3 simdjson::internal::tape_ref::get_string_view() const [function] [call site] 00060
3 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::array) [function] [call site] 00061
4 simdjson::dom::array::begin() const [function] [call site] 00062
4 simdjson::dom::array::end() const [function] [call site] 00063
5 simdjson::internal::tape_ref::after_element() const [function] [call site] 00064
4 simdjson::dom::array::iterator::operator!=(simdjson::dom::array::iterator const&) const [function] [call site] 00065
4 simdjson::dom::array::iterator::operator*() const [function] [call site] 00066
4 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::element) [function] [call site] 00067
5 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::object) [function] [call site] 00068
6 simdjson::dom::object::begin() const [function] [call site] 00069
6 simdjson::dom::object::end() const [function] [call site] 00070
7 simdjson::internal::tape_ref::after_element() const [function] [call site] 00071
6 simdjson::dom::object::iterator::operator!=(simdjson::dom::object::iterator const&) const [function] [call site] 00072
6 simdjson::dom::object::iterator::operator*() const [function] [call site] 00073
7 simdjson::dom::object::iterator::key() const [function] [call site] 00074
8 simdjson::internal::tape_ref::get_string_view() const [function] [call site] 00075
7 simdjson::dom::object::iterator::value() const [function] [call site] 00076
6 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::element) [function] [call site] 00077
7 simdjson::internal::tape_ref::get_string_view() const [function] [call site] 00078
7 simdjson::(anonymous namespace)::fast_itoa(char*, long) [function] [call site] 00079
7 simdjson::(anonymous namespace)::fast_itoa(char*, unsigned long) [function] [call site] 00080
7 simdjson::internal::to_chars(char*, char const*, double) [function] [call site] 00081
8 void simdjson::internal::dtoa_impl::grisu2<double>(char*, int&, int&, double) [function] [call site] 00082
9 simdjson::internal::dtoa_impl::boundaries simdjson::internal::dtoa_impl::compute_boundaries<double>(double) [function] [call site] 00083
10 unsigned long simdjson::internal::dtoa_impl::reinterpret_bits<unsigned long, double>(double) [function] [call site] 00084
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00085
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00086
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00087
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00088
10 simdjson::internal::dtoa_impl::diyfp::normalize(simdjson::internal::dtoa_impl::diyfp) [function] [call site] 00089
10 simdjson::internal::dtoa_impl::diyfp::normalize_to(simdjson::internal::dtoa_impl::diyfp const&, int) [function] [call site] 00090
11 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00091
10 simdjson::internal::dtoa_impl::diyfp::normalize(simdjson::internal::dtoa_impl::diyfp) [function] [call site] 00092
9 simdjson::internal::dtoa_impl::grisu2(char*, int&, int&, simdjson::internal::dtoa_impl::diyfp, simdjson::internal::dtoa_impl::diyfp, simdjson::internal::dtoa_impl::diyfp) [function] [call site] 00093
10 simdjson::internal::dtoa_impl::get_cached_power_for_binary_exponent(int) [function] [call site] 00094
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00095
10 simdjson::internal::dtoa_impl::diyfp::mul(simdjson::internal::dtoa_impl::diyfp const&, simdjson::internal::dtoa_impl::diyfp const&) [function] [call site] 00096
11 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00097
10 simdjson::internal::dtoa_impl::diyfp::mul(simdjson::internal::dtoa_impl::diyfp const&, simdjson::internal::dtoa_impl::diyfp const&) [function] [call site] 00098
10 simdjson::internal::dtoa_impl::diyfp::mul(simdjson::internal::dtoa_impl::diyfp const&, simdjson::internal::dtoa_impl::diyfp const&) [function] [call site] 00099
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00100
10 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00101
10 simdjson::internal::dtoa_impl::grisu2_digit_gen(char*, int&, int&, simdjson::internal::dtoa_impl::diyfp, simdjson::internal::dtoa_impl::diyfp, simdjson::internal::dtoa_impl::diyfp) [function] [call site] 00102
11 simdjson::internal::dtoa_impl::diyfp::sub(simdjson::internal::dtoa_impl::diyfp const&, simdjson::internal::dtoa_impl::diyfp const&) [function] [call site] 00103
12 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00104
11 simdjson::internal::dtoa_impl::diyfp::sub(simdjson::internal::dtoa_impl::diyfp const&, simdjson::internal::dtoa_impl::diyfp const&) [function] [call site] 00105
11 simdjson::internal::dtoa_impl::diyfp::diyfp(unsigned long, int) [function] [call site] 00106
11 simdjson::internal::dtoa_impl::find_largest_pow10(unsigned int, unsigned int&) [function] [call site] 00107
11 simdjson::internal::dtoa_impl::grisu2_round(char*, int, unsigned long, unsigned long, unsigned long, unsigned long) [function] [call site] 00108
11 simdjson::internal::dtoa_impl::grisu2_round(char*, int, unsigned long, unsigned long, unsigned long, unsigned long) [function] [call site] 00109
8 simdjson::internal::dtoa_impl::format_buffer(char*, int, int, int, int) [function] [call site] 00110
9 simdjson::internal::dtoa_impl::append_exponent(char*, int) [function] [call site] 00111
6 simdjson::dom::object::iterator::operator++() [function] [call site] 00112
7 simdjson::internal::tape_ref::after_element() const [function] [call site] 00113
6 simdjson::dom::object::iterator::operator!=(simdjson::dom::object::iterator const&) const [function] [call site] 00114
6 simdjson::dom::object::iterator::operator*() const [function] [call site] 00115
6 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::element) [function] [call site] 00116
4 simdjson::dom::array::iterator::operator++() [function] [call site] 00117
5 simdjson::internal::tape_ref::after_element() const [function] [call site] 00118
4 simdjson::dom::array::iterator::operator!=(simdjson::dom::array::iterator const&) const [function] [call site] 00119
4 simdjson::dom::array::iterator::operator*() const [function] [call site] 00120
4 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::append(simdjson::dom::element) [function] [call site] 00121
2 simdjson::internal::string_builder<simdjson::internal::mini_formatter>::~string_builder() [function] [call site] 00122
3 simdjson::internal::base_formatter<simdjson::internal::mini_formatter>::~base_formatter() [function] [call site] 00123
1 void showErrorAndAbort<Impl*>(Impl*, Impl*) [function] [call site] 00124
2 simdjson::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, simdjson::error_code) [function] [call site] 00125
3 simdjson::error_message(simdjson::error_code) [function] [call site] 00126
3 __clang_call_terminate [call site] 00127
2 abort [call site] 00128
1 void showOutputAndAbort<Impl*>(Impl*, Impl*) [function] [call site] 00129
2 abort [call site] 00130