> 
> 
> > -----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
> > >
> > >
> > >
> 

Reply via email to