[Crash-utility] [PATCH] Use backtrace() instead of __builtin_return_address()

Bernhard Walle bwalle at suse.de
Wed May 14 11:10:29 UTC 2008


* Dave Anderson [2008-05-13 15:36]:
>
> Bernhard Walle wrote:
> > When crash is compiled with gcc 4.3 and -O2, the __builtin_return_address()
> > causes crash to crash. See also [1] for a discussion about that.
> 
> It appears that [1] only describes a problem if you ask for more frames
> than exist.  Given the usage in crash, it's impossible to have a frame count
> of less than 4.  So it must be some other bug, no?

Yes. I only referenced to that bug to state that the behaviour is
undefined, and it's not a gcc bug per definition.

However, I tried to track down the problem a bit. In a test program, I
encountered that when __builtin_frame_address(i) is zero, then the
program crashes when __builtin_frame_address(i+1) is executed.

However, changing that in crash doesn't help. It really crashes in
__builtin_return_address(1). Tracking that down is out of my knowledge.
I used the same compiler flags in crash and the test program.



	Bernhard




More information about the Crash-utility mailing list