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]

Re: Enabling dwarf unwinder for ppc64


On Fri, 2011-10-14 at 00:20 +0200, Mark Wielaard wrote:
> On Fri, 2011-10-07 at 13:21 +0200, Mark Wielaard wrote:
> > It isn't perfect yet, but good enough to make all context.exp
> > kernel/cross-module backtrace tests work. For kernel unwinding it seems
> > good. For user space unwinding there are a couple of issues.
> > Specifically symbol lookup seems broken. We discussed this some time ago
> > on this list and this is what I am going to look into next, because that
> > obscures all other issues (32-on-64 doesn't work and vma-vdso tests
> > failing).
> [...]
> If you have a ppc64 setup, please test it out and let me know of any
> issues. The test results already look better, but there are still some,
> like the big exelib.exp testcase that fail (I haven't fully figured out
> why yet).

So, after a couple of tweaks and working around a latent elfutils
libdwfl bug exposed by the powerpc code all exelib.exp tests also
succeed. Things are not perfect yet, but the test results between x86
and powerpc begin to be comparable.

My two test systems are not really equal. The x86_64 setup is running
Fedora 14, the powerpc one is running RHEL 6.2 beta. Also I forgot to
install a 32bit development environment on the powerpc system, so some
differences are because of that.

Host: Linux springer.wildebeest.org 2.6.35.14-97.fc14.x86_64 #1 SMP Sat
Sep 17 00:15:37 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
Snapshot: version 1.7/0.152 commit release-1.6-336-g0542632
GCC: 4.5.1 [gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)]
Distro: Fedora release 14 (Laughlin)

# of expected passes       3112
# of unexpected failures     37
# of unexpected successes     8
# of expected failures      256
# of untested testcases      62
# of unsupported tests        2

Host: Linux ibm-ps701-01-lp2.rhts.eng.bos.redhat.com
2.6.32-209.el6.ppc64 #1 SMP Wed Oct 12 03:52:18 EDT 2011 ppc64 ppc64
ppc64 GNU/Linux
Snapshot: version 1.7/0.152 commit release-1.6-336-g0542632
GCC: 4.4.6 [gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)]
Distro: Red Hat Enterprise Linux Server release 6.2 Beta (Santiago)

# of expected passes        2822
# of unexpected failures     122
# of unexpected successes      9
# of expected failures       255
# of untested testcases      140
# of unsupported tests         4

Here are some of the differences from systemtap.sum:

+Running /root/systemtap/testsuite/systemtap.base/backtrace.exp ...
+FAIL: backtrace (1 0)
+FAIL: backtrace-unwindsyms (1 0)

This depends on the kernel supporting dump_trace(), which it does on
x86_64, but doesn't on powerpc. It is the fallback we use when we don't
have any registers to work with for a probe (begin, end, tracepoints).

+Running /root/systemtap/testsuite/systemtap.base/cast-scope.exp ...
+FAIL: compiling cast-scope.cxx
+UNTESTED: cast-scope.cxx run

Cased by cast-scope.cxx:1:21: error: sys/sdt.h: No such file or
directory.

Hmmm, that seems like a testcase failure, lets fix that...
OK, commit 7fc4f1e makes sure the testcase now compiles on both systems.
They now FAIL in exactly the same way:

FAIL: cast-scope
line 1: expected "function direct: {._M_dataplus={._M_p="Hello World!"}}"
Got "function direct: {._M_dataplus={._M_p="<unknown>"}}"

+FAIL: stmt_rel stmt_rel (0)

Caused by bad debuginfo:

spawn stap -c ./stmt_rel.x -e probe process("./stmt_rel.x").statement("Move@stmt
_rel.c+1") {printf("Move %d\n",$s1)}
semantic error: not accessible at this address (0x100007f8, dieoffset: 0x546): i
dentifier '$s1' at <input>:1:82
        source: probe process("./stmt_rel.x").statement("Move@stmt_rel.c+1") {pr
intf("Move %d\n",$s1)}
                                                                                
                 ^
Pass 2: analysis failed.  Try again with another '--vp 01' option.

+FAIL: vma_vdso-m64
+FAIL: vma_vdso.c compile -m32
+UNTESTED: vma_vdso-m32

The vdso vma tracker is busted on powerpc, I haven't investigated yet
why. The -m32 FAIL comes from not installing the 32bit devel packages of
course.

+FAIL: vta-test.c compile -m32
-PASS: 32-bit func_alias direct
-PASS: 32-bit func_alias wildcard
-PASS: 32_BIT_UTRACE_SYSCALL_ARGS startup
-PASS: 32_BIT_UTRACE_SYSCALL_ARGS load generation
-PASS: 32_BIT_UTRACE_SYSCALL_ARGS shutdown and output

More 32bit devel package uninstalled failures.

-PASS: RUN1-(-m64) wasn't cached
-PASS: RUN2-(-m64) wasn't cached
-PASS: RUN1-(-m32) wasn't cached
-PASS: RUN2-(-m32) wasn't cached
+UNSUPPORTED: gtod

Yes, that seems to not match up, but it really seems that is what is
happening, weird... O wait, that output is just a typo. Fixed in commit
cd4c71e. Now it just says:
UNSUPPORTED: hash_add_buildid
Dunno why yet.

-PASS: plt
-PASS: plt
-PASS: plt glob
+UNTESTED: plt

plt probes aren't supported on powerpc yet.

-PASS: rep_ret.c compile -m64
-PASS: rep_ret-m64
-PASS: rep_ret.c compile -m32
-PASS: rep_ret-m32
+UNSUPPORTED: rep_ret

rep_ret is x86 specific.

-PASS: sdt -O2  V2_uprobe
+XFAIL: sdt -O2  V2_uprobe
-PASS: sdt -O3  V2_uprobe
+XFAIL: sdt -O3  V2_uprobe

-XFAIL: sdt_misc types types  ptr_char_var  ptr_short_int_var
unsigned_short_int_var  ptr_int_var  unsigned_int_var
ptr_long_long_int_var  arr_char_var  arr_struct_var V3_uprobe -O2
+XFAIL: sdt_misc types types V3_uprobe -O2
-XFAIL: sdt_misc types types  ptr_char_var  ptr_short_int_var
unsigned_short_int_var  ptr_int_var  unsigned_int_var
ptr_long_long_int_var  arr_char_var  arr_struct_var V3_uprobe -O3
+XFAIL: sdt_misc types types V3_uprobe -O3
-PASS: sdt_misc compiling sdt_asm.S
-PASS: sdt_misc asm (65)

I don't know where these differences come from.

+FAIL: usymbols -m64
+FAIL: unable to compile usymbols_lib.c -m32

If I install the 32bit devel package the second one does PASS. I think
the -m64 variant fails because we are extracting the syscall
argument/user pointer wrongly. Needs investigation.

-UNTESTED: systemtap.examples/locks/bkl build
-UNTESTED: systemtap.examples/locks/bkl run
-UNTESTED: systemtap.examples/locks/bkl_stats build
-UNTESTED: systemtap.examples/locks/bkl_stats run
-PASS: systemtap.examples/memory/hw_watch_addr support
-PASS: systemtap.examples/memory/hw_watch_addr build
-PASS: systemtap.examples/memory/hw_watch_addr run
-PASS: systemtap.examples/memory/hw_watch_sym support
-PASS: systemtap.examples/memory/hw_watch_sym build
-PASS: systemtap.examples/memory/hw_watch_sym run
+PASS: systemtap.examples/locks/bkl support
+PASS: systemtap.examples/locks/bkl build
+PASS: systemtap.examples/locks/bkl run
+PASS: systemtap.examples/locks/bkl_stats support
+PASS: systemtap.examples/locks/bkl_stats build
+PASS: systemtap.examples/locks/bkl_stats run
+UNTESTED: systemtap.examples/memory/hw_watch_addr build
+UNTESTED: systemtap.examples/memory/hw_watch_addr run
+UNTESTED: systemtap.examples/memory/hw_watch_sym build
+UNTESTED: systemtap.examples/memory/hw_watch_sym run

-UNTESTED: systemtap.examples/network/autofs4 build
-UNTESTED: systemtap.examples/network/autofs4 run
+PASS: systemtap.examples/network/autofs4 support
+PASS: systemtap.examples/network/autofs4 build
+PASS: systemtap.examples/network/autofs4 run

These look like hust a difference between Fedora14 and RHEL6.2Beta.

+FAIL: systemtap.examples/network/netdev build
+FAIL: systemtap.examples/network/netdev run

Bad debuginfo:

attempting command stap -p4 netdev.stp
OUT semantic error: not accessible at this address (0xc0000000004d5078, dieoffse
t: 0x2f25314): identifier '$dev' at /root/install/share/systemtap/tapset/network
ing.stp:159:29
        source:         dev_name = get_netdev_name($dev)
                                                   ^
semantic error: not accessible at this address (0xc0000000004d5078, dieoffset: 0
x2f2530b): identifier '$flags' at :160:10
        source:         flags = $flags
                                ^
Pass 2: analysis failed.  Try again with another '--vp 01' option.

-PASS: buildok/memory-mmap.stp
+XFAIL: buildok/memory-mmap.stp
-PASS: buildok/networking-change_rx_flag.stp
+XFAIL: buildok/networking-change_rx_flag.stp
-XFAIL: buildok/scheduler-ctxswitch.stp
+PASS: buildok/scheduler-ctxswitch.stp

Haven't investigated, look like this was expected (XFAIL/PASS)?

+FAIL: shared buffer guest
+FAIL: shared buffer guest2
+FAIL: buffer sharing (0, 0)

I am not sure what is going on here...

WARNING: ".stp_print_flush_test1" [/tmp/stapyqx0i5/stap_fa908cad8c23790d2e3ca8aec57cab15_796.ko] undefined!
Error inserting module '/tmp/stapyqx0i5/stap_fa908cad8c23790d2e3ca8aec57cab15_796.ko': Unknown symbol in module
Warning: /root/install/bin/staprun exited with status: 1

+FAIL: 64-bit net1 nd_syscall
+FAIL: 64-bit signal nd_syscall

Not yet investigated.

Plus lots of 32-bit syscall differences, because there are no 32bit
devel packages installed.

All other differences/extra FAILs (about 100!) all come from
systemtap.server and the systemtap.unprivileged tests. I am seeing about
16 FAILs for systemtap.unpriviliged also on my x86_64 setup.


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