Bug 17155 - systemtap.examples/profiling/functioncallcount.stp failures on x86_64
Summary: systemtap.examples/profiling/functioncallcount.stp failures on x86_64
Status: RESOLVED FIXED
Alias: None
Product: systemtap
Classification: Unclassified
Component: testsuite (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-07-14 13:54 UTC by David Smith
Modified: 2014-07-14 15:02 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Smith 2014-07-14 13:54:15 UTC
When I run the systemtap.examples/check.exp testcase (which tests all the examples), the functioncallcount.stp example fails about half the time on x86_64. When it fails, I see this in systemtap.log:

====
ERROR: probe overhead exceeded threshold
WARNING: Number of errors: 1, skipped probes: 0
WARNING: /usr/local/bin/staprun exited with status: 1
Pass 5: run failed.  [man error::pass5]
child process exited abnormally
RC 1
FAIL: systemtap.examples/profiling/functioncallcount run
====

The guts of functioncallcount.stp look like:

====
probe kernel.function(@1).call {  # probe functions listed on commandline
  called[probefunc()] <<< 1  # add a count efficiently
}

global called

probe end {
  foreach (fn in called-)  # Sort by call count (in decreasing order)
  #       (fn+ in called)  # Sort by function name
    printf("%s %d\n", fn, @count(called[fn]))
  exit()
}
====

Because of bug #13693, probefunc() was rewritten and now has a higher overhead. If we switch to ppfunc(), this example script should work more often.

(The use of the new probefunc() may also be contributing to bug #17140)
Comment 1 David Smith 2014-07-14 15:02:43 UTC
Fixed in commit 69ee8ac. Changed all the examples to use ppfunc() instead of probefunc().