[Bug tapsets/20618] Cannot get the real syscall return code value
fche at redhat dot com
sourceware-bugzilla@sourceware.org
Mon Sep 19 15:44:00 GMT 2016
https://sourceware.org/bugzilla/show_bug.cgi?id=20618
Frank Ch. Eigler <fche at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |codonell at redhat dot com,
| |fche at redhat dot com
Resolution|--- |WORKSFORME
--- Comment #1 from Frank Ch. Eigler <fche at redhat dot com> ---
> We couldn't find in any part of the documentation that returnval() or the
> syscall return value will be replaced with the errno value [...]
It turns out that this is an artefact of how linux system calls
work. A positive/zero return value is success, a negative
return value usually is an error code that the glibc runtime will
shift into the global 'errno'. At the low systemtap level, the
negative errno -is- the genuine return value from the syscall.
Unfortunately, we don't have convenient probes at the glibc level
to observe the C-level aftereffects properly. There is a glibc
RFE open (for quite some time now) for them to insert some sys/sdt.h
markers, so that stap could present the cooked results properly.
(RHers, see also https://bugzilla.redhat.com/show_bug.cgi?id=742034 .)
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the Systemtap
mailing list