run-parts segfaults with gcc 4.5.0

Thierry Reding thierry.reding at avionic-design.de
Mon May 10 10:54:08 UTC 2010


* walter harms wrote:
> 
> 
> Thierry Reding schrieb:
> > * walter harms wrote:
> >>
> >> Thierry Reding schrieb:
> >>> Hi,
> >>>
> >>> After upgrading gcc to 4.5.0, I get segfaults when running the run-parts
> >>> applet. The segfault happens in bb_alphasort() during the calls to strcmp().
> >>> I debugged this and saw that the pointers passed into strcmp() were both
> >>> NULL. Apparently this comes from the act() function, which for some reason
> >>> overwrites the elements of the names array. Oddly enough, when I print that
> >>> same array at the end of each call to act() the segfault disappears.
> >>>
> >>> FWIW, I came up with the following patch that fixes things, though it is
> >>> probably not the preferred way for busybox because it removes the names
> >>> variable from the global storage.
> >>>
> >> from gcc 4.5.0 changes:
> >> "There is a new optimization pass that attempts to change prototype of functions to avoid unused parameters, pass only relevant parts of
> >> structures and turn arguments passed by reference to arguments passed by value when possible. It is enabled by -O2 and above as well as -Os and
> >> can be manually invoked using the new command-line switch -fipa-sra. "
> >>
> >> Since BB uses -Os as default, perhaps you can remove it and test again ?
> > 
> > Configuring busybox with CONFIG_DEBUG=y and CONFIG_DEBUG_PESSIMIZE=y fixes
> > the segfault. Setting those two variables seems the canonical way to tell
> > busybox to build with -O0.
> > 
> 
> so its a gcc bug, welcome to the club, did you already report it ?

Nope, not yet. But I will do that then.

Thanks,
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20100510/8d7b6d0a/attachment.pgp>


More information about the busybox mailing list