Bug 684227

Summary: Update RHEL 6 System Tap Beginners Guide futexes.stp example script to account for FUTEX_PRIVATE_FLAG
Product: Red Hat Enterprise Linux 6 Reporter: Kim van der Riet <kim.vdriet>
Component: systemtapAssignee: Frank Ch. Eigler <fche>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: low Docs Contact:
Priority: low    
Version: 6.3CC: mjw, pmuller, wcohen
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: systemtap-1.6-1.el6 Doc Type: Bug Fix
Doc Text:
Cause RHEL6 kernels have additional futex flags, FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME in the syscall.futex $op argument. Consequence Without filtering out FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME the script does not record data on RHEL6. Fix The futexes.stp added filtering for FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME. Result The futexes.stp example now runs correctly on RHEL6.
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-12-06 15:17:42 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Modified script none

Description Kim van der Riet 2011-03-11 14:31:14 UTC
The RHEL 6 System Tap Beginners Guide in section 4.4 "Identifying Contended User-Space Locks" includes an example script futexes.stp. However, this script will not return any results as written when run on RHEL 6, as it has not accounted for the FUTEX_PRIVATE_FLAG which newer kernels now use.

The update is fairly trivial, but the examples in our current documentation should work out-of-the-box.

Perhaps there are other example scripts that need updating too.

Comment 2 Kim van der Riet 2011-03-11 14:35:15 UTC
Created attachment 483740 [details]
Modified script

The attached script works ok on RHEL 6 (although it is likely not very elegantly written and can be cleaned up).

Comment 4 Frank Ch. Eigler 2011-03-11 15:45:24 UTC
Kim, Are you sure that the example shouldn't mask off the PRIVATE flag, as in

   if ((op & ~FUTEX_PRIVATE_FLAG) != FUTEX_WAIT) next;

Comment 5 Kim van der Riet 2011-03-11 16:05:30 UTC
I agree, that is probably a more correct implementation.

Comment 6 Frank Ch. Eigler 2011-03-24 17:35:11 UTC
upstream commits c085f1feb2 and 148d3a367 should correct this.

Comment 11 William Cohen 2011-11-09 16:29:23 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause
    RHEL6 kernels have additional futex flags, FUTEX_PRIVATE_FLAG and
    FUTEX_CLOCK_REALTIME in the syscall.futex $op argument.
Consequence
    Without filtering out FUTEX_PRIVATE_FLAG and
    FUTEX_CLOCK_REALTIME the script does not record data on RHEL6.
Fix
    The futexes.stp added filtering for FUTEX_PRIVATE_FLAG and
    FUTEX_CLOCK_REALTIME.
Result
    The futexes.stp example now runs correctly on RHEL6.

Comment 12 errata-xmlrpc 2011-12-06 15:17:42 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2011-1517.html