pr4225 branch status

Jim Keniston jkenisto@us.ibm.com
Mon Aug 4 22:02:00 GMT 2008


On Sun, 2008-08-03 at 10:18 -0400, Frank Ch. Eigler wrote:
> Hi -
> 
> The git repo now contains a copy of my pr4225 working branch.  It has
> made some progress recently.  On a kernel with working utrace+uprobes
> (which at the moment is only rhel5 I believe), probes like this kind
> of work, if you have the debugging information installed:
> 
>    probe process("/bin/ls").function("*") { log(probefunc()) }
> 
> It's very raw, so think of it only as a new way of testing the uprobes
> module.

I played with Frank's new stap on an i686 system using an old version of
utrace (with kernel.org 2.6.24) and uprobes.ko built in the kernel tree.
(Uprobes doesn't yet work with the new utrace.)

Some stuff worked, some didn't.  See below.

> I'm working on fixing a (diagnosable, user-context-level)
> hang for processes that fork, so don't probe forky shells yet!

I think that the above is a uprobes bug.  Uprobes seems to handle fork()
OK, but the version of clone() that bash uses doesn't look like fork()
or vfork(), as far as I can tell.

> 
> There are also some temporary functional regressions
> (symbol-table-only probing and some other minor stuff) that I believe
> also need fixing before merging this into mainline.
> 
> - FChE

In the report below, "works" means it seemed to work for me, and
"doesn't work" means I couldn't get it to work.

(+) probe process(PATH).function(FUNC) works in general.
(-) probe process(PID).function(FUNC) doen't work (syntax error).
(+) probe process(PATH).function("*") works.
(-) probe process(PATH).function("*@file.c") doesn't work.
(+) Despite Frank's warning above, starting or ending a script session
while the probed process runs seems to work just fine, and so does
starting or terminating one or more probed processes while the script
runs.
(+) It works on C++ programs.  probefunc() doesn't include the
"classname::" prefix.
(+) Return probes work.
(+) $return works in return probes.
(-+) On x86-32, target vars ($var), including function args, don't work
until you apply the enclosed patch.
(-) Probing stap and staprun doesn't work.  I get messages like
"semantic error: missing relocation base against: identifier 'process'
at stap.stp:1:7".  This may be related to the fact that the file(1)
command thinks stap and staprun are shared objects.
(-) Dwarfless user-space probing hasn't been implemented yet.  (That's
on my list.)
(+) ... but <type>_arg(n) functions work.  (This is probably NOT yet
true of powerpc.)
(x) As far as I can tell, the PATH in process(PATH) needs to
match /proc/<pid>/exe.  If PATH includes a symbolic link, it won't work.

Keep up the good work!

Jim
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dwarf_reg4_i386.patch
Type: text/x-patch
Size: 1174 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/systemtap/attachments/20080804/0958a4f5/attachment.bin>


More information about the Systemtap mailing list