This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug translator/16941] fix listing mode inconsistencies
- From: "jlebon at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sourceware dot org
- Date: Thu, 15 May 2014 19:23:13 +0000
- Subject: [Bug translator/16941] fix listing mode inconsistencies
- Auto-submitted: auto-generated
- References: <bug-16941-6586 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=16941
Jonathan Lebon <jlebon at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jistone at redhat dot com
--- Comment #1 from Jonathan Lebon <jlebon at redhat dot com> ---
The jlebon/listing branch now contains all the patches necessary to reduce the
listing_mode.exp testcase to 0 unexpected failures and 1360 expected passes.
The majority of failures were due to the issue mentioned in #5 in comment 0
above. However, some work was also required in various builders which did not
add a well-formed probe point to the derivation chain.
It also includes fixes to the way library probes are handled (see commit
550dc0d). We now always use iterate_over_libraries(), unless the fully resolved
path to the library was given. If no matching libraries are found by
iterate_over_libraries(), only *then* do we try to directly resolve the path
using find_executable(), and if found, warn that it is not a statically needed
library. Finally, if that also fails, we suggest from the list of statically
needed libraries.
The branch also contains a tweak to the way probe points derived from globby
probes act. For example, a globby process probe results in multiple process
probes for each matching binary. However, they are made optional since we only
expect a subset of them to resolve.
We previously overrode the location of the new process probes to make them
optional. This resulted in a contradiction between what was listed and the
final probe location. The change is purely cosmetic, but provides a more
consistent user experience.
Library probes:
$ # BEFORE
$
$ stap -l
'process("listing_mode").library("liblisting_mode.*").function("libfoo")'
process("/home/yyz/jlebon/codebase/systemtap/build/testsuite/listing_mode").library("/home/yyz/jlebon/codebase/systemtap/build/testsuite/liblisting_mode.so").function("libfoo")?
$
$ # AFTER
$
$ stap -l
'process("listing_mode").library("liblisting_mode.*").function("libfoo")'
process("/home/yyz/jlebon/codebase/systemtap/build/testsuite/listing_mode").library("/home/yyz/jlebon/codebase/systemtap/build/testsuite/liblisting_mode.so").function("libfoo")
$
The issue was a little less visible for globby process probes, but still
present:
$ # BEFORE
$
$ stap -l 'process("fo?").function("foo")'
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
$ stap -l 'process("fo?").function("foo")' -vvv
<...>
[0]:
locations[1]:
[0]:
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")?
[1]:
locations[1]:
[0]:
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
[2]:
locations[1]:
[0]: process("fo?").function("foo")
<...>
$ stap -e 'probe process("fo?").function("foo") { println(pp()); exit() }' -c
./foo
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")?
$
$ # AFTER
$
$ stap -l 'process("fo?").function("foo")'
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
$ stap -l 'process("fo?").function("foo")' -vvv
<...>
[0]:
locations[1]:
[0]:
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
[1]:
locations[1]:
[0]:
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
[2]:
locations[1]:
[0]:
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
[3]:
locations[1]:
[0]: process("*foo").function("foo")
<...>
$ stap -e 'probe process("fo?").function("foo") { println(pp()); exit() }' -c
./foo
process("/home/yyz/jlebon/codebase/systemtap/systemtap/foo").function("foo")
$
--
You are receiving this mail because:
You are the assignee for the bug.