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