> > > > -----Original Message----- > > From: Prathamesh Kulkarni <[email protected]> > > Sent: 10 August 2026 09:01 > > To: Prathamesh Kulkarni <[email protected]>; Jan Hubicka > > <[email protected]>; [email protected] > > Subject: RE: [auto-profile] Fix segfault in scale_bb_profile > > > > > > > > > -----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 > Hi, > Ping * 2: https://gcc.gnu.org/pipermail/gcc-patches/2026-July/724497.html OK, thanks! Honza > > Thanks, > Prathamesh > > > > Thanks, > > Prathamesh > > > > > > Thanks, > > > Prathamesh > > > > > > > > > >
