Fuzz introspector: fuzzer
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
8 8 10 :

['std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::end[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+ , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::append[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&)', 'bool std::__1::operator!=[abi:ne180100] , std::__1::allocator >*>(std::__1::__wrap_iter , std::__1::allocator >*> const&, std::__1::__wrap_iter , std::__1::allocator >*> const&)', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'std::__1::__wrap_iter , std::__1::allocator >*>::operator++[abi:ne180100]()', 'std::__1::__wrap_iter , std::__1::allocator >*>::operator*[abi:ne180100]() const', 'Fatal(char const*, ...)']

8 8 EdgeEnv::LookupVariable(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/ninja/src/graph.cc:457
8 8 1 :

['Fatal(char const*, ...)']

8 8 CheckNinjaVersion(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/ninja/src/version.cc:42
2 849 38 :

['Node::set_dyndep_pending(bool)', 'StringPiece::StringPiece(std::__1::basic_string , std::__1::allocator > const&)', 'State::AddIn(Edge*, StringPiece, unsigned long)', 'State::AddValidation(Edge*, StringPiece, unsigned long)', 'std::__1::vector >::empty[abi:ne180100]() const', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'Edge::maybe_phonycycle_diagnostic() const', 'EvalString::Evaluate(Env*) const', 'Edge::~Edge()', 'std::__1::vector >::size[abi:ne180100]() const', 'std::__1::vector >::begin[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::vector >::end[abi:ne180100]()', 'std::__1::vector >::operator[][abi:ne180100](unsigned long)', 'Node::generated_by_dep_loader() const', 'std::__1::basic_string , std::__1::allocator >::empty[abi:ne180100]() const', 'std::__1::__wrap_iter ::operator->[abi:ne180100]() const', 'std::__1::vector >::end[abi:ne180100]()', 'bool std::__1::operator==[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::vector >::begin[abi:ne180100]()', 'operator delete(void*)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'std::__1::__wrap_iter std::__1::remove[abi:ne180100] , Node*>(std::__1::__wrap_iter , std::__1::__wrap_iter , Node* const&)', 'State::GetNode(StringPiece, unsigned long)', 'std::__1::basic_string , std::__1::allocator >::basic_string(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::__wrap_iter std::__1::find[abi:ne180100] , Node*>(std::__1::__wrap_iter , std::__1::__wrap_iter , Node* const&)', 'Node::path() const', 'std::__1::vector >::operator[][abi:ne180100](unsigned long)', 'std::__1::vector >::erase(std::__1::__wrap_iter , std::__1::__wrap_iter )', 'CanonicalizePath(std::__1::basic_string , std::__1::allocator >*, unsigned long*)', 'Warning(char const*, ...)', 'State::AddOut(Edge*, StringPiece, unsigned long, std::__1::basic_string , std::__1::allocator >*)', 'std::__1::vector >::reserve(unsigned long)', 'std::__1::vector >::pop_back()', 'Edge::GetUnescapedDyndep() const', '_ZNSt3__111__wrap_iterIPKP4NodeEC2B8ne180100IPS2_TnNS_9enable_ifIXsr14is_convertibleIT_S4_EE5valueEiE4typeELi0EEERKNS0_IS9_EE']

2 909 ManifestParser::ParseEdge(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:330
2 2 3 :

['std::__1::vector >::pop_back()', 'Edge::~Edge()', 'operator delete(void*)']

2 2 ManifestParser::ParseEdge(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:348
0 12 2 :

['Lexer::Error(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >*)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc']

0 12 ManifestParser::ParsePool(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:128
0 12 2 :

['Lexer::Error(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >*)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc']

0 12 ManifestParser::ParseRule(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:170
0 4 1 :

['BindingEnv::LookupRule(std::__1::basic_string , std::__1::allocator > const&)']

0 4 BindingEnv::LookupRule(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/ninja/src/eval_env.cc:50
0 0 1 :

['std::__1::vector >::data[abi:ne180100]() const']

47 47 EdgeEnv::LookupVariable(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/ninja/src/graph.cc:410
0 0 None 42 2624 ManifestParser::ParseEdge(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:219
0 0 None 38 2446 ManifestParser::ParseEdge(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:235
0 0 None 32 2187 ManifestParser::ParseEdge(std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/manifest_parser.cc:251
0 0 None 28 28 ReadFile(std::__1::basic_string ,std::__1::allocator >const&,std::__1::basic_string ,std::__1::allocator >*,std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/ninja/src/util.cc:444

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 sprintf [call site] 00001
1 fopen [call site] 00002
1 fwrite [call site] 00003
1 fclose [call site] 00004
1 RealDiskInterface::RealDiskInterface() [function] [call site] 00005
2 DiskInterface::DiskInterface() [function] [call site] 00006
3 FileReader::FileReader() [function] [call site] 00007
1 State::State() [function] [call site] 00008
2 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::HashMap(unsigned int, float) [function] [call site] 00009
3 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::init(unsigned int, float) [function] [call site] 00010
4 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::max_load_factor(float) [function] [call site] 00011
5 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::rehash(unsigned long) [function] [call site] 00012
6 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::max_size() const [function] [call site] 00013
6 __assert_fail [call site] 00014
6 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::rebuild(unsigned int) [function] [call site] 00015
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::max_load_factor() const [function] [call site] 00016
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::alloc_bucket(unsigned int) [function] [call site] 00017
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::alloc_index(unsigned int) [function] [call site] 00018
7 __clang_call_terminate [call site] 00019
8 __cxa_begin_catch [call site] 00020
6 _ZNK7emhash87HashMapI11StringPieceP4NodeNSt3__14hashIS1_EENS4_8equal_toIS1_EENS4_9allocatorINS4_4pairIS1_S3_EEEENS_13DefaultPolicyEE8hash_keyIS1_TnNS4_9enable_ifIXaantsr3std11is_integralIT_EE5valuentsr3std7is_sameISH_NS4_12basic_stringIcNS4_11char_traitsIcEENS9_IcEEEEEE5valueEjE4typeELj0EEEmRKSH_ [function] [call site] 00021
6 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::find_unique_bucket(unsigned long) [function] [call site] 00022
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::hash_main(unsigned int) const [function] [call site] 00023
8 _ZNK7emhash87HashMapI11StringPieceP4NodeNSt3__14hashIS1_EENS4_8equal_toIS1_EENS4_9allocatorINS4_4pairIS1_S3_EEEENS_13DefaultPolicyEE8hash_keyIS1_TnNS4_9enable_ifIXaantsr3std11is_integralIT_EE5valuentsr3std7is_sameISH_NS4_12basic_stringIcNS4_11char_traitsIcEENS9_IcEEEEEE5valueEjE4typeELj0EEEmRKSH_ [function] [call site] 00024
8 __clang_call_terminate [call site] 00025
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::kickout_bucket(unsigned int, unsigned int) [function] [call site] 00026
8 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::find_empty_bucket(unsigned int, unsigned int) [function] [call site] 00027
8 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::find_prev_bucket(unsigned int, unsigned int) const [function] [call site] 00028
8 __clang_call_terminate [call site] 00029
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::find_last_bucket(unsigned int) const [function] [call site] 00030
7 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::find_empty_bucket(unsigned int, unsigned int) [function] [call site] 00031
7 __clang_call_terminate [call site] 00032
4 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::rehash(unsigned long) [function] [call site] 00033
2 BindingEnv::BindingEnv() [function] [call site] 00034
3 Env::Env() [function] [call site] 00035
2 Rule::Phony() [function] [call site] 00036
3 Rule::Rule(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00037
2 BindingEnv::AddRule(std::__1::unique_ptr<Rule const, std::__1::default_delete<Rule const> >) [function] [call site] 00038
3 Rule::name() const [function] [call site] 00039
3 BindingEnv::LookupRuleCurrentScope(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00040
3 __assert_fail [call site] 00041
3 Rule::name() const [function] [call site] 00042
2 State::AddPool(Pool*) [function] [call site] 00043
3 Pool::name() const [function] [call site] 00044
3 State::LookupPool(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00045
3 __assert_fail [call site] 00046
3 Pool::name() const [function] [call site] 00047
2 State::AddPool(Pool*) [function] [call site] 00048
2 BindingEnv::~BindingEnv() [function] [call site] 00049
3 Env::~Env() [function] [call site] 00050
2 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::~HashMap() [function] [call site] 00051
3 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::clearkv() [function] [call site] 00052
3 __clang_call_terminate [call site] 00053
1 ManifestParserOptions::ManifestParserOptions() [function] [call site] 00054
1 ManifestParser::ManifestParser(State*, FileReader*, ManifestParserOptions) [function] [call site] 00055
2 Parser::Parser(State*, FileReader*) [function] [call site] 00056
3 Lexer::Lexer() [function] [call site] 00057
4 StringPiece::StringPiece() [function] [call site] 00058
1 Parser::Load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, Lexer*) [function] [call site] 00059
2 __cxa_guard_acquire [call site] 00060
2 Metrics::NewMetric(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00061
3 Metric::Metric() [function] [call site] 00062
2 __cxa_guard_release [call site] 00063
2 ScopedMetric::ScopedMetric(Metric*) [function] [call site] 00064
3 (anonymous namespace)::HighResTimer() [function] [call site] 00065
2 Lexer::Error(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) [function] [call site] 00066
3 StringPiece::AsString() const [function] [call site] 00067
3 snprintf [call site] 00068
2 __cxa_guard_abort [call site] 00069
2 ScopedMetric::~ScopedMetric() [function] [call site] 00070
3 (anonymous namespace)::HighResTimer() [function] [call site] 00071
3 __clang_call_terminate [call site] 00072
1 ManifestParser::~ManifestParser() [function] [call site] 00073
2 Parser::~Parser() [function] [call site] 00074
1 State::~State() [function] [call site] 00075
2 BindingEnv::~BindingEnv() [function] [call site] 00076
2 emhash8::HashMap<StringPiece, Node*, std::__1::hash<StringPiece>, std::__1::equal_to<StringPiece>, std::__1::allocator<std::__1::pair<StringPiece, Node*> >, emhash8::DefaultPolicy>::~HashMap() [function] [call site] 00077
1 RealDiskInterface::~RealDiskInterface() [function] [call site] 00078
2 DiskInterface::~DiskInterface() [function] [call site] 00079
3 FileReader::~FileReader() [function] [call site] 00080