This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
UProbes fails
- From: Tim Beaulen <tbscope at gmail dot com>
- To: systemtap at sources dot redhat dot com
- Date: Fri, 3 Sep 2010 08:00:56 +0200
- Subject: UProbes fails
Hello,
I'm not sure if this is the right mailing list for this question. I
get the following errors when using systemtap:
When trying to profile a KDE style, I get the following errors:
...
WARNING: u*probe failed plasma-desktop[4511]
'process("/usr/lib/kde4/plugins/styles/oxygen.so").function("~KSharedPtr@/usr/include/ksharedptr.h:90").call'
addr b221c162 rc -1
...
WARNING: u*probe failed plasma-desktop[4511]
'process("/usr/lib/kde4/plugins/styles/oxygen.so").function("~QString@/usr/include/qt4/QtCore/qstring.h:869").call'
addr b221c527 rc -1
...
WARNING: u*probe failed kxkb[4521]
'process("/usr/lib/kde4/plugins/styles/oxygen.so").function("~QWeakPointer@/usr/include/qt4/QtCore/qsharedpointer_impl.h:556").call'
addr b2547b12 rc -1
...
ERROR: Skipped too many probes, check MAXSKIPPED or try again with
stap -t for more details.
WARNING: Number of errors: 0, skipped probes: 117
When looking at the source code of these functions, they look like this:
inline ~KSharedPtr() { if (d && !d->ref.deref()) delete d; }
inline QString::~QString() { if (!d->ref.deref()) free(d); }
inline ~QWeakPointer() { if (d && !d->weakref.deref()) delete d; }
Can someone explain why ubprobes fails on these functions?
The script I'm using:
global starttime;
global timetable;
probe begin
{
printf("Begin\n");
}
probe process("/usr/lib/kde4/plugins/styles/oxygen.so").function("*").call
{
starttime[probefunc()] = gettimeofday_ns();
#printf("%s --> %s\n", thread_indent(1), probefunc());
}
probe process("/usr/lib/kde4/plugins/styles/oxygen.so").function("*").return
{
if (!([probefunc()] in starttime)) next;
delta = gettimeofday_ns() - starttime[probefunc()];
timetable[probefunc()] <<< delta;
#printf("%s <-- %s\n", thread_indent(-1), probefunc());
}
function print_header()
{
printf("%60s %10s %20s %20s %20s %20s\n", "Function call",
"Called", "Total ns", "Avg ns", "Min ns", "Max ns");
}
probe end
{
printf("\n");
print_header();
foreach(time in timetable)
printf("%60s %10d %20d %20d %20d %20d\n", time,
@count(timetable[time]), @sum(timetable[time]), @avg(timetable[time]),
@min(timetable[time]), @max(timetable[time]));
}