This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [PATCH v2] Tracepoint Tapset for Memory Subsystem
On Fri, 2009-09-25 at 14:19 -0500, David Smith wrote:
...
>
> Sorry to keep finding more things, but...
>
> I'm a bit worried about your use of '__builtin_return_address()' here.
> Jim Keniston reported on it back in 2005 in the following message, but
> there isn't much context.
>
> <http://sourceware.org/ml/systemtap/2005-q2/msg00242.html>
>
> Jim, can you remember some context here? Was the use of
> '__builtin_return_address' considered good/bad/neutral? We don't seem
> to use it anywhere else.
>
In case anybody still cares...
The context was that we had recently implemented kretprobes, and
somebody pointed out that hijacking the return address would cause
__builtin_return_address() to return the wrong value. From my survey of
the kernel, I concluded that "__builtin_return_address is used entirely
for tracing (tracing that is disabled by default), profiling, and error
reporting. I couldn't find any case where normal operation of the OS
would be affected."
Ironically, soon after that, kprobes itself started using
__builtin_return_address().
Anyway, there was no controversy as to whether
__builtin_return_address() was bad or good per se; it was simply
recognized that it would return invalid results when called from a
return-probed function.
Jim