> -----Original Message-----
> From: Prathamesh Kulkarni <[email protected]>
> Sent: 19 July 2026 19:42
> To: Jan Hubicka <[email protected]>; [email protected]
> Subject: [auto-profile] Fix segfault in scale_bb_profile
> 
> External email: Use caution opening links or attachments
> 
> 
> Hi,
> For the following test case:
> 
> #include <regex>
> #include <string>
> #include <iostream>
> int main()
> {
>   std::string s="hello";
>   std::regex re("h.*");
>   std::cout << std::regex_match(s,re) << std::endl;
>   return 0;
> }
> 
> Compiling with -O2 -fauto-profile=<gcov> --param auto-profile-bbs=0
> results in:
> 
> tr.cxx:4:118: internal compiler error: Segmentation fault
>     4 | int main(){ std::string s="hello"; std::regex re("h.*");
> std::cout << std::regex_match(s,re) << std::endl; return 0; }
>       |
> ^
> 0x29e0877 internal_error(char const*, ...)
>         ../../gcc/gcc/diagnostic-global-context.cc:787
> 0x1488763 crash_signal
>         ../../gcc/gcc/toplev.cc:325
> 0x2653ce4 autofdo::scale_bb_profile()
>         ../../gcc/gcc/auto-profile.cc:4061
> 0x265b517 afdo_annotate_cfg
>         ../../gcc/gcc/auto-profile.cc:4509
> 0x265b517 auto_profile
>         ../../gcc/gcc/auto-profile.cc:4677
> 0x265b517 execute
>         ../../gcc/gcc/auto-profile.cc:4850
> 
> That happens in scale_bb_profile at following place:
>   const function_instance *s
>       = afdo_source_profile->get_function_instance_by_decl
>           (current_function_decl);
> 
> The issue is that get_function_instance_by_decl will return NULL if
> DECL_SOURCE_FILE for current_function_decl, doesn't match with the
> filename stored in afdo_string_table
> 
> For above case,
> current_function_decl is
> _ZNSt15_Deque_iteratorINSt8__detail9_StateSeqINSt7__cxx1112regex_trait
> sIcEEEERS5_PS5_EmmEv,
> DECL_SOURCE_FILE is stl_deque.h
> and s->file_name() corresponds to stl_tree.h
> 
> and get_function_instance_by_decl thus returns NULL.
> 
> In afdo_annotate_cfg, the workaround for that is to iterate over all
> filenames to avoid dropping profile for that function if it has
> mismatched filename:
> 
>   /* FIXME: This is a workaround for sourcefile tracking, if
> afdo_string_table
>      ends up with empty filename or incorrect filename for the
> function and
>      should be removed once issues with sourcefile tracking get fixed.
> */
>   if (s == NULL)
>     for (unsigned i = 0; i < afdo_string_table->filenames ().length
> (); i++)
>       {
>         s = afdo_source_profile->get_function_instance_by_decl
> (current_function_decl, afdo_string_table->filenames()[i]);
>         if (s)
>           break;
>       }
> 
> 
> The attached patch passes the function_instance found in
> afdo_annotate_cfg to scale_bb_profile, instead of recomputing it,
> which fixes the segfault.
> 
> Bootstrap+test in progress.
> Is this patch OK to commit if testing passes ?
Hi,
ping: https://gcc.gnu.org/pipermail/gcc-patches/2026-July/724497.html

Thanks,
Prathamesh
> 
> Thanks,
> Prathamesh
> 
> 
> 

Reply via email to