Hide Forgot
+++ This bug was initially created as a clone of Bug #670646 +++ When attempting to build an executable of Ruby that includes systemtap marker using SystemTap 1.4 some arguments for markers were truncated to 8 bits in size. The problem is caused by the sdt_uprobe_var_expanding_visitor::get_register_width() function "%rbx" as being a bytes sized (8 bit) register rather that a full 64-bit registers. To replicate problem on rhel6 or fedora: 1) install systemtap-1.4 on the machine 2a) make sure that the systemtap dtrace is available in /usr/bin/dtrace 2b) make sure that the uprobes modules is available, as root: make -C /usr/share/systemtap/runtime/uprobes 3) download the http://people.redhat.com/wcohen/ruby-1.8.7.299-6.el6.dtrace_4.src.rpm 3) build and install the ruby rpms 4) Verify that probes are available with: stap -L 'process("/usr/lib64/libruby.so.1.8").mark("*") 5) Use the following script to demonstrate the problem stap -e 'probe process("/usr/lib64/libruby.so.1.8").function("rb_class2name").return {printf("$return=0x%x %s\n", $return, user_string($return))} probe process("/usr/lib64/libruby.so.1.8").mark("function__entry"){printf("$arg1=0x%x\n", $arg1)}' in another window run a ruby program for example ruby ~/rpmbuild/BUILD/ruby-1.8.7.299/ruby-1.8.7-p299/sample/biorhythm.rb See something like the following out from the systemtap script where $arg1 is just the low 8 bits of the pointer: $return=0x9d4450 Hash $arg1=0x50 $return=0x9c5c30 String $arg1=0x30
problem well-understood and patch nearly in hand; need to fix it to avoid generating erroneous trace data
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2011-0651.html