I discovered this flaw when trying to use the fully-resolved name for a function probe: $ stap -l 'kernel.function("send_sigqueue")' kernel.function("send_sigqueue@kernel/signal.c:1309") $ stap -l 'kernel.function("send_sigqueue@kernel/signal.c:1309")' --vp 03 [...] focused on module 'kernel' selected source file 'arch/x86/kernel/signal.c' semantic error: libdw failure (dwarf_getsrc_file): no matching address range semantic error: no match while resolving probe point kernel.function("send_sigqueue@kernel/signal.c:1309") It matched arch/x86/kernel/signal.c because we implicitly use a '*/' in front of source paths. The arch file is less than 1309 lines long though, so there can't be any functions there. However, instead of aborting, we should continue looking at other source files so we can find the correct function in the plain 'kernel/signal.c'.
Fixed in: commit e679283a5ae5555db19d613fa3299f96cfc94eb7 Author: Wenji Huang <wenji.huang@oracle.com> Date: Mon Aug 10 19:29:50 2009 -0400 Avoid assertion error for no matched function in statement probe * dwflpp.cxx (iterate_over_functions): Return for NULL pointer. * testsuite/systemtap.base/statement.exp: Add test case.