This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap 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]

[Bug translator/19500] .callee test failures


https://sourceware.org/bugzilla/show_bug.cgi?id=19500

--- Comment #4 from David Smith <dsmith at redhat dot com> ---
On rawhide x86_64 (4.5.0-0.rc5.git0.1.fc24.x86_64), the "callee (simple -
probing .callee(foo).return - 32-bit)" failure is the equivalent of doing the
following:

====
# gcc ../../src/testsuite/systemtap.base/callee.simple.c -m32 -O -g -lm -o
callee
# stap -e 'probe process("./callee").function("main").callee("level1").return {
printf("caller %s callee %s\n", usymname(ustack(0)), ppfunc()) }' -c ./callee
WARNING: Child process exited with signal 11 (Segmentation fault)
WARNING: /usr/local/bin/staprun exited with status: 1
Pass 5: run failed.  [man error::pass5]
====

Without stap, callee runs without getting a SIGSEGV. This appears to be a
kernel problem, since I get the same SIGSEV without systemtap by just using
perf:

====
# gcc ../../src/testsuite/systemtap.base/callee.simple.c -m32 -O -g -lm -o
callee
# perf probe -x ./callee 'cmr=main%return'
Added new event:
  probe_callee:cmr     (on main%return in
/discer.farm/es/scratch/dsmith/systemtap/rawhide-64-2/testsuite/callee)

You can now use it in all perf tools, such as:

        perf record -e probe_callee:cmr -aR sleep 1

# perf record -e probe_callee:cmr -aR ./callee
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.148 MB perf.data (1 samples) ]
Segmentation fault
====

On RHEL7 x86_64 (3.10.0-347.el7.x86_64), I get the same "callee (simple -
probing .callee(foo).return - 32-bit)" failure when running the new callee.exp.
The output looks similar to the rawhide system:

====
# gcc ../../src/testsuite/systemtap.base/callee.simple.c -m32 -O -g -lm -o
callee
# stap -e 'probe process("./callee").function("main").callee("level1").return {
printf("caller %s callee %s\n", usymname(ustack(0)), ppfunc()) }' -c ./callee
WARNING: Child process exited with signal 11 (Segmentation fault)
WARNING: /usr/local/bin/staprun exited with status: 1
Pass 5: run failed.  [man error::pass5]
====

However, when run with perf, the target doesn't get a SIGSEGV:

====
# perf probe -x ./callee 'callee32=main%return'
Added new event:
  probe_callee:callee32 (on main%return in
/discer.farm/es/scratch/dsmith/systemtap/rhel7-64/testsuite/callee)

You can now use it in all perf tools, such as:

        perf record -e probe_callee:callee32 -aR sleep 1

# perf record -e probe_callee:callee32 -aR ./callee
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.145 MB perf.data (1 samples) ]
====

So, the RHEL7 failure appears to be a systemtap problem, since it doesn't
happen with perf.

-- 
You are receiving this mail because:
You are the assignee for the bug.

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