On rhel6, buildok/dentry-embedded.stp regressed. The new error is: ======= spawn stap -p4 --compatible=2.9 /root/systemtap/testsuite/buildok/dentry-embedded.stp semantic error: while processing function real_mount semantic error: type definition 'mount' not found in 'kernel': operator '@cast' at /usr/local/share/systemtap/tapset/type_defined.stpm:6:16 source: @defined(& @cast(0, @type) -> @member) ^ in expansion of macro: operator '@type_member_defined' at /usr/local/share/systemtap/tapset/linux/dentry.stp:160:6 source: if (@type_member_defined("mount", mnt_parent)) { ^ Pass 2: analysis failed. [man error::pass2] wait results: 12735 exp6 0 1 FAIL: buildok/dentry-embedded.stp ======= The regression seems to be caused by following commit: ======= commit 056cb27baac1ce3ab4d675dbbe4881afde801ca3 Author: Frank Ch. Eigler <fche@redhat.com> Date: Wed Jun 22 11:43:33 2016 -0400 PR18079: support nested autocast / @defined We now perform const-folding & dead-code-elision during the type resolution loop, whenever an autocast expression gets evaluated. This way, @defined(foo()->mm) type expressions can work as nature intended. This requires @defined() not to be short-circuit evaluated to 0 during a random const_folding process, so a flag is introduced to control its preservation or collapsing. For the last (assert_resolvability) pass in the type resolution loop, this flag is set to true, so that genuinely unresolvable @defined($expressions) do get mapped to 0 in time for a last elision. =======
Another problem this aforementioned commit 056cb27baac1 is causing is, that it breaks the compileability of sys.stp (part of syscall.exp) on rhel6: ======= 6.8 Server x86_64 # stap -I $HOME/src/testsuite/systemtap.syscall/tapset -p4 $HOME/src/testsuite/systemtap.syscall/sys.stp semantic error: while processing probe kernel.function("sys32_mmap@arch/x86/ia32/sys_ia32.c:155") from: syscall.mmap32 from: syscall.* semantic error: type definition 'mmap_arg_struct32' not found in 'kernel': operator '@cast' at /usr/local/share/systemtap/tapset/linux/x86_64/syscalls.stp:169:15 source: if (@defined(@cast($arg, "mmap_arg_struct32")->addr)) { ^ Pass 2: analysis failed. [man error::pass2] 6.8 Server x86_64 # =======
Just for the record, this is not exactly a regression, but the exposure of a latent bug: probe kernel.function("sys_sendto").return { println(@defined(@entry($foobar))) } fails under quite old systemtap too.
monster commit 16aa72d9adf4 reworks some rewriting passes
Hello. This commit is causing a regression (presumably infinite loop) with python probes. ---------- /tmp/test.py start ---------- def func1(a, b): return a + b; print(func1(1, 2)); ---------- /tmp/test.py end ---------- # time PYTHONPATH=/tmp /usr/bin/stap -e 'probe python2.module("test").function("*") { printf("%s %s\n", pn(), $$parms); }' -c 'python -m HelperSDT /tmp/test.py' Bisect log: # bad: [e81970274b46cf3e20586751bf58195258f31518] Add timestamp to nfsd-trace.stp example. # good: [9f950728d1a921e32d53cc8dabcbc0684d0256ee] Update lookup_bad_addr() to avoid a kernel warning. git bisect start 'HEAD' '9f950728d1a921e32d53cc8dabcbc0684d0256ee' # good: [4fb0437d6e19bc5b7c917af5f542938d68968828] testsuite: more adaptation to $var -> @entry($var) in .return probes git bisect good 4fb0437d6e19bc5b7c917af5f542938d68968828 # bad: [16aa72d9adf420e973cfb3370f4cb9dacd3922fd] PR20627: rework several code rewriting passes git bisect bad 16aa72d9adf420e973cfb3370f4cb9dacd3922fd # good: [15528f73d31f4fdd5257016957ac2e4cfaac8cd0] testsuite: tweak bz1027459 git bisect good 15528f73d31f4fdd5257016957ac2e4cfaac8cd0 # first bad commit: [16aa72d9adf420e973cfb3370f4cb9dacd3922fd] PR20627: rework several code rewriting passes
This appears to be fixed in commit f90352b. It was caused by interesting infinite recursion of the python variable-expander in-place mapping $var3 to python2_get_var_obj(Py2Object_Repr($arg3, "arg3")) and then the nested $arg3 ad infinitum.