c/8743: receiving result from __builtin_return_address() beyond stack top causes segfault (fwd)
Wolfgang Bangerth
bangerth@ticam.utexas.edu
Thu Dec 5 06:06:00 GMT 2002
The following reply was made to PR c/8743; it has been noted by GNATS.
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: c/8743: receiving result from __builtin_return_address() beyond
stack top causes segfault (fwd)
Date: Thu, 5 Dec 2002 08:00:27 -0600 (CST)
-------------------------------------------------------------------------
Wolfgang Bangerth email: bangerth@ticam.utexas.edu
www: http://www.ticam.utexas.edu/~bangerth
---------- Forwarded message ----------
Date: Thu, 05 Dec 2002 11:04:34 +0100
From: Edward Welbourne <eddy@opera.no>
To: bangerth@dealii.org, gcc-gnats@gcc.gnu.org
Cc: biere@inf.ethz.ch, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
nobody@gcc.gnu.org, steven.robbins@videotron.ca
Subject: 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.
More information about the Gcc-prs
mailing list