This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: c/8743: receiving result from __builtin_return_address() beyond stack top causes segfault


Also: note that the work-around only fixes the problem for the *first*
LEVEL at which it would otherwise seg-fault (which *is* just enough to
enable backtracing in ccmalloc); it does nothing about the segfault at
greater depth, which also happens in __builtin_frame_address(); if you
use __builtin_frame_address(3) in place of __builtin_return_address(2)
in the example code, you'll get a segfault just the same (on x86).

[All of which rather hints that these functions do a zig-zag chain of
pointer dereferences, which is missing an `are we zero yet' test.
I naively imagine this will be easy to fix.]

I've now had the opportunity to test the same on a ppc:
__builtin_return_address(2) segfaults, as does
__builtin_frame_address(4), but
__builtin_frame_address(3) actually succeeds !
This is with a 2.95.? version and with 3.2.1.

	Eddy.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]