Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kerneltoast/1f099e1d45c231cabe1df11932b4c41f to your computer and use it in GitHub Desktop.
Save kerneltoast/1f099e1d45c231cabe1df11932b4c41f to your computer and use it in GitHub Desktop.
From 0cafd0c0e9ba66908c49e667de99e3e120b8920f Mon Sep 17 00:00:00 2001
From: Sultan Alsawaf <sultan@openresty.com>
Date: Wed, 24 Feb 2021 13:11:38 -0800
Subject: [PATCH] runtime: fix symbol lookups when the first section isn't
executable
---
runtime/sym.c | 12 ++++++------
runtime/task_finder_vma.c | 9 +++++++--
runtime/unwind.c | 2 +-
runtime/vma.c | 31 ++++++++++---------------------
4 files changed, 24 insertions(+), 30 deletions(-)
diff --git a/runtime/sym.c b/runtime/sym.c
index 1527a9a3d..96805f9ab 100644
--- a/runtime/sym.c
+++ b/runtime/sym.c
@@ -136,6 +136,7 @@ static struct _stp_module *_stp_kmod_sec_lookup(unsigned long addr,
static struct _stp_module *_stp_umod_lookup(unsigned long addr,
struct task_struct *task,
const char **name,
+ unsigned long *offset,
unsigned long *vm_start,
unsigned long *vm_end)
{
@@ -146,7 +147,7 @@ static struct _stp_module *_stp_umod_lookup(unsigned long addr,
addr &= ((compat_ulong_t) ~0);
#endif
if (stap_find_vma_map_info(task->group_leader, addr,
- vm_start, vm_end, name, &user) == 0)
+ vm_start, vm_end, offset, name, &user) == 0)
if (user != NULL)
{
struct _stp_module *m = (struct _stp_module *)user;
@@ -175,6 +176,7 @@ static const char *_stp_kallsyms_lookup(unsigned long addr,
if (task)
{
+ unsigned long sect_offset = 0;
unsigned long vm_start = 0;
unsigned long vm_end = 0;
#ifdef CONFIG_COMPAT
@@ -184,13 +186,13 @@ static const char *_stp_kallsyms_lookup(unsigned long addr,
if (_stp_is_compat_task2(task))
addr &= ((compat_ulong_t) ~0);
#endif
- m = _stp_umod_lookup(addr, task, modname, &vm_start, &vm_end);
+ m = _stp_umod_lookup(addr, task, modname, &sect_offset, &vm_start, &vm_end);
if (m)
{
sec = &m->sections[0];
/* XXX .absolute sections really shouldn't be here... */
if (strcmp(".dynamic", m->sections[0].name) == 0)
- rel_addr = addr - vm_start;
+ rel_addr = addr - vm_start + sect_offset;
else
rel_addr = addr;
}
@@ -372,14 +374,12 @@ unsigned long _stp_linenumber_lookup(unsigned long addr, struct task_struct *tas
if (task)
{
- unsigned long vm_start = 0;
- unsigned long vm_end = 0;
#ifdef CONFIG_COMPAT
/* Handle 32bit signed values in 64bit longs, chop off top bits. */
if (_stp_is_compat_task2(task))
addr &= ((compat_ulong_t) ~0);
#endif
- m = _stp_umod_lookup(addr, task, &modname, &vm_start, &vm_end);
+ m = _stp_umod_lookup(addr, task, &modname, NULL, NULL, NULL);
}
else
m = _stp_kmod_sec_lookup(addr, &sec);
diff --git a/runtime/task_finder_vma.c b/runtime/task_finder_vma.c
index dc77a80f5..17aaec386 100644
--- a/runtime/task_finder_vma.c
+++ b/runtime/task_finder_vma.c
@@ -54,6 +54,7 @@ struct __stp_tf_vma_entry {
struct task_struct *tsk;
unsigned long vm_start;
unsigned long vm_end;
+ unsigned long offset;
char path[TASK_FINDER_VMA_ENTRY_PATHLEN]; /* mmpath name, if known */
// User data (possibly stp_module)
@@ -206,7 +207,8 @@ __stp_tf_get_vma_bucket(struct task_struct *tsk)
// only from user context.
static int
stap_add_vma_map_info(struct task_struct *tsk, unsigned long vm_start,
- unsigned long vm_end, const char *path, void *user)
+ unsigned long vm_end, unsigned long offset,
+ const char *path, void *user)
{
struct __stp_tf_vma_bucket *bucket = __stp_tf_get_vma_bucket(tsk);
struct __stp_tf_vma_entry *entry;
@@ -227,6 +229,7 @@ stap_add_vma_map_info(struct task_struct *tsk, unsigned long vm_start,
entry->tsk = tsk;
entry->vm_start = vm_start;
entry->vm_end = vm_end;
+ entry->offset = offset;
entry->user = user;
path_len = strlen(path);
@@ -290,7 +293,7 @@ stap_remove_vma_map_info(struct task_struct *tsk, unsigned long vm_start)
static int
stap_find_vma_map_info(struct task_struct *tsk, unsigned long addr,
unsigned long *vm_start, unsigned long *vm_end,
- const char **path, void **user)
+ unsigned long *offset, const char **path, void **user)
{
struct __stp_tf_vma_bucket *bucket;
struct __stp_tf_vma_entry *entry;
@@ -308,6 +311,8 @@ stap_find_vma_map_info(struct task_struct *tsk, unsigned long addr,
*vm_start = entry->vm_start;
if (vm_end)
*vm_end = entry->vm_end;
+ if (offset)
+ *offset = entry->offset;
if (path)
*path = entry->path;
if (user)
diff --git a/runtime/unwind.c b/runtime/unwind.c
index 9cae157af..dba16a724 100644
--- a/runtime/unwind.c
+++ b/runtime/unwind.c
@@ -1495,7 +1495,7 @@ static int unwind(struct unwind_context *context, int user)
if (user)
{
- m = _stp_umod_lookup (pc, current, & module_name, NULL, NULL);
+ m = _stp_umod_lookup (pc, current, & module_name, NULL, NULL, NULL);
if (m)
s = &m->sections[0];
}
diff --git a/runtime/vma.c b/runtime/vma.c
index f88145a47..0b7ab1fb1 100644
--- a/runtime/vma.c
+++ b/runtime/vma.c
@@ -108,7 +108,7 @@ static void _stp_vma_match_vdso(struct task_struct *tsk)
if (found != NULL)
{
stap_add_vma_map_info(tsk, vdso_addr,
- vdso_addr + found->sections[0].size,
+ vdso_addr + found->sections[0].size, 0,
"vdso", found);
dbug_task_vma(1,"found vdso: %s\n", found->path);
}
@@ -161,13 +161,13 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
// We used to be only interested in the first load of the whole module that
// is executable. But with modern enough gcc/ld.so, executables are mapped
- // in more small pieces (r--p,r-xp,rw-p, instead of r-xp, rw-p). To establish
- // the virtual base address, we initially look for an offset=0 mapping.
+ // in more small pieces (r--p,r-xp,rw-p, instead of r-xp, rw-p). NB:
+ // the first section might not be executable, so there can be an offset.
//
// We register whether or not we know the module,
// so we can later lookup the name given an address for this task.
- if (path != NULL && offset == 0
- && stap_find_vma_map_info(tsk, addr, NULL, NULL, NULL, NULL) != 0) {
+ if (path != NULL &&
+ stap_find_vma_map_info(tsk, addr, NULL, NULL, NULL, NULL, NULL) != 0) {
for (i = 0; i < _stp_num_modules; i++) {
// PR20433: papering over possibility of NULL pointers
if (strcmp(path ?: "", _stp_modules[i]->path ?: "") == 0)
@@ -178,21 +178,9 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
"vm_cb: matched path %s to module (sec: %s)\n",
path, _stp_modules[i]->sections[0].name);
module = _stp_modules[i];
- /* Make sure we really don't know about this module
- yet. If we do know, we might want to extend
- the coverage. */
- res = stap_find_vma_map_info_user(tsk->group_leader,
- module,
- &vm_start, &vm_end,
- NULL);
- if (res == -ESRCH)
- res = stap_add_vma_map_info(tsk->group_leader,
- addr, addr + length,
- path, module);
- else if (res == 0 && vm_end + 1 == addr)
- res = stap_extend_vma_map_info(tsk->group_leader,
- vm_start,
- addr + length);
+ res = stap_add_vma_map_info(tsk->group_leader,
+ addr, addr + length,
+ offset, path, module);
/* VMA entries are allocated dynamically, this is fine,
* since we are in a task_finder callback, which is in
* user context. */
@@ -212,7 +200,8 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
|| _stp_target == tsk->group_leader->pid)
{
res = stap_add_vma_map_info(tsk->group_leader, addr,
- addr + length, path, NULL);
+ addr + length, offset, path,
+ NULL);
dbug_task_vma(1,
"registered '%s' for %d (res:%d) [%lx-%lx]\n",
path, tsk->group_leader->pid,
--
2.30.1
--- systemtap-before.sum 2021-02-25 13:31:01.918354817 -0800
+++ systemtap-after.sum 2021-02-25 14:29:06.388937683 -0800
@@ -1,4 +1,4 @@
-Test Run By root on Wed Feb 24 15:06:16 2021
+Test Run By root on Thu Feb 25 13:35:06 2021
Native configuration is x86_64-unknown-linux-gnu
=== systemtap tests ===
@@ -45,7 +45,10 @@
PASS: abort: TEST 5: abort() in the middle of a probe handler body (--compatible 3.3): stdout: string is ""
PASS: abort: TEST 5: abort() in the middle of a probe handler body (--compatible 3.3): exit code: string should NOT be "0"
PASS: abort: TEST 5: abort() in the middle of a probe handler body (--compatible 3.3): stderr: matches regex "^semantic error: unresolved function.*\(similar: [^\n]*?\): identifier 'abort' at [^\n]*?\.stp:3:5\n"
-PASS: abort: TEST 6: abort() in timer.profile (using globals): stdout: string is "fire 3!\nfire 2!\nfire 1!\n"
+FAIL: abort: TEST 6: abort() in timer.profile (using globals): stdout: string should be "fire 3!\nfire 2!\nfire 1!\n", but got "fire 2!
+fire 3!
+fire 1!
+"
PASS: abort: TEST 6: abort() in timer.profile (using globals): exit code: string is "0"
PASS: abort: TEST 7: abort() in timer.profile (more concurrency and no globals): stdout: string is ""
PASS: abort: TEST 7: abort() in timer.profile (more concurrency and no globals): stderr: string is ""
@@ -206,9 +209,9 @@
FAIL: at_var_cu
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var.exp ...
PASS: at_var
-PASS: at_var (non-optimized)
+FAIL: at_var (non-optimized)
PASS: at_var
-PASS: at_var (non-optimized)
+FAIL: at_var (non-optimized)
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var_func.exp ...
PASS: at_var_func
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var_lvalue.exp ...
@@ -216,13 +219,13 @@
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var_mark.exp ...
PASS: at_var_mark startup
PASS: at_var_mark load generation
-PASS: at_var_mark shutdown and output
+FAIL: at_var_mark unexpected output
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var_mark_func.exp ...
PASS: at_var_mark_func startup
PASS: at_var_mark_func load generation
-PASS: at_var_mark_func shutdown and output
+FAIL: at_var_mark_func unexpected output
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var_pie.exp ...
-PASS: at_var_pie
+FAIL: at_var_pie
Running /home/sultan/systemtap/testsuite/systemtap.base/at_var_print.exp ...
PASS: at_var_print: TEST 1: atvar_op::print() output the module arg properly.: stdout: matches regex "\yreturn \@var\("v", "[^\n"]+/a\.out"\);"
PASS: at_var_print: TEST 1: atvar_op::print() output the module arg properly.: exit code: string is "0"
@@ -244,7 +247,7 @@
PASS: auto_path2
PASS: auto_path3
Running /home/sultan/systemtap/testsuite/systemtap.base/backtrace.exp ...
-PASS: backtrace (3 37)
+PASS: backtrace (3 32)
PASS: backtrace-unwindsyms (3 35)
PASS: self-unwind-ensure-exact (0)
Running /home/sultan/systemtap/testsuite/systemtap.base/bad-code.exp ...
@@ -301,7 +304,7 @@
Running /home/sultan/systemtap/testsuite/systemtap.base/bz1074541.exp ...
PASS: ./bz1074541
Running /home/sultan/systemtap/testsuite/systemtap.base/bz1126645.exp ...
-FAIL: bz1126645 -p5 (27)
+FAIL: bz1126645 -p5 (47)
Running /home/sultan/systemtap/testsuite/systemtap.base/bz1214176.exp ...
PASS: stap -p4 -e { probe nfs.proc.read_done { println(server_ip) } }
PASS: stap -p4 -e { probe nfs.proc.read_setup { println(count) } }
@@ -636,7 +639,7 @@
FAIL: enum compiling enum.c
Running /home/sultan/systemtap/testsuite/systemtap.base/environment_sanity.exp ...
Host: Linux centos7-bb 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
-Snapshot: version 4.5/0.177, commit release-4.4-107-gc974dab2faf7
+Snapshot: version 4.5/0.177, commit release-4.4-106-g95076838771e
GCC: 4.8.5 [gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)]
Distro: CentOS Linux release 7.8.2003 (Core)
SElinux: Enforcing
@@ -890,8 +893,8 @@
PASS: systemtap.base/kmodule.stp (loaded after) load generation
PASS: systemtap.base/kmodule.stp (loaded after) shutdown and output
PASS: systemtap.base/kprobe_module.stp (loaded after) startup
-FAIL: systemtap.base/kprobe_module.stp (loaded after) load generation
-FAIL: systemtap.base/kprobe_module.stp (loaded after) unexpected output
+PASS: systemtap.base/kprobe_module.stp (loaded after) load generation
+PASS: systemtap.base/kprobe_module.stp (loaded after) shutdown and output
Running /home/sultan/systemtap/testsuite/systemtap.base/kprobes.exp ...
PASS: kprobes startup
PASS: kprobes load generation
@@ -2790,8 +2793,8 @@
Running /home/sultan/systemtap/testsuite/systemtap.base/optim_stats.exp ...
PASS: TEST1 (5, 14)
PASS: TEST2 (20, 81)
-FAIL: TEST3 (5, 4)
-PASS: TEST4 (20, 66)
+PASS: TEST3 (5, 6)
+PASS: TEST4 (20, 67)
Running /home/sultan/systemtap/testsuite/systemtap.base/optim_voidstmt.exp ...
PASS: optim_voidstmt startup
PASS: optim_voidstmt load generation
@@ -2825,7 +2828,7 @@
FAIL: perf process (0 - 0)
PASS: perf counter
FAIL: perf global (0 - 0)
-UNRESOLVED: counter order 1000000 800000
+UNRESOLVED: counter order 4000000 1000000
Running /home/sultan/systemtap/testsuite/systemtap.base/plt.exp ...
PASS: plt
PASS: plt library
@@ -2934,10 +2937,10 @@
PASS: process-begin-user: TEST 2: register() in probe process.end (kernel): stdout: string is ""
PASS: process-begin-user: TEST 2: register() in probe process.end (kernel): exit code: string should NOT be "0"
PASS: process-begin-user: TEST 2: register() in probe process.end (kernel): stderr: matches regex "ERROR: cannot access CPU registers in this context"
-PASS: process-begin-user: TEST 3: @var() in probe process(PATH).begin (with vma tracker) (kernel): stdout: string is "a: 32\n"
-PASS: process-begin-user: TEST 3: @var() in probe process(PATH).begin (with vma tracker) (kernel): exit code: string is "0"
-PASS: process-begin-user: TEST 4: @var() in probe process.begin (with vma tracker) (kernel): stdout: string is "a: 32\n"
-PASS: process-begin-user: TEST 4: @var() in probe process.begin (with vma tracker) (kernel): exit code: string is "0"
+FAIL: process-begin-user: TEST 3: @var() in probe process(PATH).begin (with vma tracker) (kernel): stdout: string should be "a: 32\n", but got ""
+FAIL: process-begin-user: TEST 3: @var() in probe process(PATH).begin (with vma tracker) (kernel): exit code: string should be "0", but got "1"
+FAIL: process-begin-user: TEST 4: @var() in probe process.begin (with vma tracker) (kernel): stdout: string should be "a: 32\n", but got ""
+FAIL: process-begin-user: TEST 4: @var() in probe process.begin (with vma tracker) (kernel): exit code: string should be "0", but got "1"
Running /home/sultan/systemtap/testsuite/systemtap.base/process_by_cmd.exp ...
PASS: process_by_cmd.c compile
PASS: process_by_cmd.stp
@@ -2958,7 +2961,7 @@
Running /home/sultan/systemtap/testsuite/systemtap.base/proc_exec.exp ...
PASS: PROC_EXEC_01 startup
PASS: PROC_EXEC_01 load generation
-PASS: PROC_EXEC_01 shutdown and output
+FAIL: PROC_EXEC_01 unexpected output
PASS: PROC_EXEC_02 startup
PASS: PROC_EXEC_02 load generation
PASS: PROC_EXEC_02 shutdown and output
@@ -3391,11 +3394,11 @@
PASS: compiling sdt.c -O2 uprobe
PASS: sdt_global_var -O2 uprobe additional_flags=-O2
PASS: compiling sdt.c uprobe
-PASS: sdt_global_var uprobe additional_flags=-fPIE additional_flags=-pie additional_flags=-O2
+FAIL: sdt_global_var uprobe additional_flags=-fPIE additional_flags=-pie additional_flags=-O2
PASS: compiling sdt.c -O2 V2_uprobe
PASS: sdt_global_var -O2 V2_uprobe additional_flags=-O2
PASS: compiling sdt.c V2_uprobe
-PASS: sdt_global_var V2_uprobe additional_flags=-fPIE additional_flags=-pie additional_flags=-O2
+FAIL: sdt_global_var V2_uprobe additional_flags=-fPIE additional_flags=-pie additional_flags=-O2
Running /home/sultan/systemtap/testsuite/systemtap.base/sdt_misc.exp ...
PASS: sdt_misc dtrace V1_uprobe
PASS: sdt_misc compiling V1_uprobe
@@ -3887,7 +3890,7 @@
PASS: UTRACE_P5_01_cmd shutdown and output
PASS: UTRACE_P5_02 startup
PASS: UTRACE_P5_02 load generation
-PASS: UTRACE_P5_02 shutdown and output
+FAIL: UTRACE_P5_02 unexpected output
PASS: UTRACE_P5_02_cmd startup
PASS: UTRACE_P5_02_cmd load generation
PASS: UTRACE_P5_02_cmd shutdown and output
@@ -3896,7 +3899,7 @@
PASS: UTRACE_P5_03 shutdown and output
PASS: UTRACE_P5_04 startup
PASS: UTRACE_P5_04 load generation
-FAIL: UTRACE_P5_04 unexpected output
+PASS: UTRACE_P5_04 shutdown and output
PASS: UTRACE_P5_05 startup
PASS: UTRACE_P5_05 load generation
PASS: UTRACE_P5_05 shutdown and output
@@ -3969,7 +3972,7 @@
PASS: vars - vfs_read@fs/read_write.c (parms/locals)
Running /home/sultan/systemtap/testsuite/systemtap.base/vma_vdso.exp ...
PASS: vma_vdso.c compile -m32
-PASS: vma_vdso-m32
+FAIL: vma_vdso-m32
Running /home/sultan/systemtap/testsuite/systemtap.base/vta-test.exp ...
PASS: vta-test.c compile m32
UNTESTED: vta-test-m32 (no-gcc-vta)
@@ -3986,7 +3989,7 @@
Running /home/sultan/systemtap/testsuite/systemtap.base/warnings.exp ...
PASS: warnings
Running /home/sultan/systemtap/testsuite/systemtap.base/warn_overflow.exp ...
-FAIL: warn_overflow (3,1)
+FAIL: warn_overflow (3,2)
Running /home/sultan/systemtap/testsuite/systemtap.base/wordexp.exp ...
PASS: wordexp -c ""
PASS: wordexp -c "ls || true"
@@ -4149,9 +4152,7 @@
PASS: dtrace_clone2 load generation
PASS: dtrace_clone2 shutdown and output
PASS: dtrace_clone3 - build success
-PASS: dtrace_clone4 startup
-PASS: dtrace_clone4 load generation
-PASS: dtrace_clone4 shutdown and output
+FAIL: dtrace_clone4 startup (timeout)
Running /home/sultan/systemtap/testsuite/systemtap.clone/dtrace_fork_exec.exp ...
PASS: dtrace_fork_exec1 - build success
PASS: dtrace_fork_exec2 startup
@@ -4177,7 +4178,9 @@
PASS: main_quiesce shutdown and output
Running /home/sultan/systemtap/testsuite/systemtap.clone/probe_by_pid.exp ...
PASS: probe_by_pid(utrace) - build success
-FAIL: probe_by_pid(utrace) startup (eof)
+PASS: probe_by_pid(utrace) startup
+PASS: probe_by_pid(utrace) load generation
+PASS: probe_by_pid(utrace) shutdown and output
PASS: probe_by_pid(function) startup
PASS: probe_by_pid(function) load generation
FAIL: probe_by_pid(function) unexpected output
@@ -4213,14 +4216,12 @@
PASS: int64 function arguments -- numeric
PASS: char function arguments -- numeric
PASS: string function arguments -- numeric
-PASS: symfileline ()
-PASS: symfile ()
-PASS: symline ()
-PASS: symfileline in pp ()
+FAIL: symfileline ()
+FAIL: symfile ()
+FAIL: symline ()
+FAIL: symfileline in pp ()
Running /home/sultan/systemtap/testsuite/systemtap.context/context_ns.exp ...
-PASS: pid_ns startup
-PASS: pid_ns load generation
-PASS: pid_ns shutdown and output
+FAIL: pid_ns startup (eof)
Running /home/sultan/systemtap/testsuite/systemtap.context/fib.exp ...
FAIL: fib (2 0)
FAIL: fib (10 0)
@@ -4247,9 +4248,15 @@
Running /home/sultan/systemtap/testsuite/systemtap.context/uprobe_uaddr_mark.exp ...
PASS: uprobe_uaddr_mark
Running /home/sultan/systemtap/testsuite/systemtap.context/usymbols.exp ...
-PASS: usymbols m32
-PASS: usymbols m32
-PASS: usymbols m32-O
+FAIL: usymbols m32
+FAIL: usymbols m32
+FAIL: usymbols m32
+FAIL: usymbols m32
+FAIL: usymbols m32
+FAIL: usymbols m32
+FAIL: usymbols m32-O
+FAIL: usymbols m32-O
+FAIL: usymbols m32-O
Running /home/sultan/systemtap/testsuite/systemtap.context/usymfileline.exp ...
PASS: usymfileline - compiled successfully
PASS: usymfileline () startup
@@ -4354,7 +4361,7 @@
PASS: systemtap.examples/general/tcl-trace build
FAIL: systemtap.examples/general/tcl-trace run
PASS: systemtap.examples/general/varwatch build
-PASS: systemtap.examples/general/varwatch run
+FAIL: systemtap.examples/general/varwatch run
PASS: systemtap.examples/general/watchdog support
PASS: systemtap.examples/general/watchdog build
PASS: systemtap.examples/general/watchdog run
@@ -4369,7 +4376,7 @@
PASS: systemtap.examples/io/deviceseeks build
PASS: systemtap.examples/io/deviceseeks run
PASS: systemtap.examples/io/disktop build
-FAIL: systemtap.examples/io/disktop run
+PASS: systemtap.examples/io/disktop run
PASS: systemtap.examples/io/eatmydata build
PASS: systemtap.examples/io/eatmydata run
PASS: systemtap.examples/io/enospc build
@@ -4620,7 +4627,7 @@
PASS: systemtap.examples/profiling/fntimes build
PASS: systemtap.examples/profiling/fntimes run
PASS: systemtap.examples/profiling/functioncallcount build
-PASS: systemtap.examples/profiling/functioncallcount run
+FAIL: systemtap.examples/profiling/functioncallcount run
PASS: systemtap.examples/profiling/ioctl_handler build
PASS: systemtap.examples/profiling/ioctl_handler run
PASS: systemtap.examples/profiling/latencytap build
@@ -4633,8 +4640,8 @@
PASS: systemtap.examples/profiling/periodic run
PASS: systemtap.examples/profiling/pf2 build
PASS: systemtap.examples/profiling/pf2 run
-PASS: systemtap.examples/profiling/pf3 build
-PASS: systemtap.examples/profiling/pf3 run
+FAIL: systemtap.examples/profiling/pf3 build
+UNTESTED: systemtap.examples/profiling/pf3 run
PASS: systemtap.examples/profiling/pf4 build
PASS: systemtap.examples/profiling/pf4 run
PASS: systemtap.examples/profiling/sched_switch build
@@ -4874,7 +4881,7 @@
FAIL: kprobes_onthefly - otf_start_disabled_iter_5 (invalid output)
FAIL: kprobes_onthefly - otf_start_enabled_iter_5 (invalid output)
FAIL: kprobes_onthefly - otf_timer_100ms (invalid output)
-FAIL: kprobes_onthefly - otf_timer_50ms (invalid output)
+PASS: kprobes_onthefly - otf_timer_50ms (valid output)
FAIL: kprobes_onthefly - otf_timer_10ms (invalid output)
PASS: kprobes_onthefly - otf_stress_5ms_iter_50 (survived)
PASS: kprobes_onthefly - otf_stress_1ms_iter_50 (survived)
@@ -4913,14 +4920,14 @@
FAIL: uprobes_onthefly - otf_start_enabled_iter_1 (invalid output)
FAIL: uprobes_onthefly - otf_start_disabled_iter_2 (invalid output)
FAIL: uprobes_onthefly - otf_start_enabled_iter_2 (invalid output)
-FAIL: uprobes_onthefly - otf_start_disabled_iter_3 (stap)
+FAIL: uprobes_onthefly - otf_start_disabled_iter_3 (invalid output)
FAIL: uprobes_onthefly - otf_start_enabled_iter_3 (invalid output)
FAIL: uprobes_onthefly - otf_start_disabled_iter_4 (invalid output)
FAIL: uprobes_onthefly - otf_start_enabled_iter_4 (invalid output)
-FAIL: uprobes_onthefly - otf_start_disabled_iter_5 (invalid output)
+FAIL: uprobes_onthefly - otf_start_disabled_iter_5 (stap)
FAIL: uprobes_onthefly - otf_start_enabled_iter_5 (invalid output)
FAIL: uprobes_onthefly - otf_timer_100ms (invalid output)
-FAIL: uprobes_onthefly - otf_timer_50ms (invalid output)
+FAIL: uprobes_onthefly - otf_timer_50ms (stap)
PASS: uprobes_onthefly - otf_stress_10ms_iter_50 (survived)
PASS: uprobes_onthefly - otf_stress_5ms_iter_50 (survived)
PASS: uprobes_onthefly - otf_stress_1ms_iter_50 (survived)
@@ -5148,7 +5155,7 @@
PASS: buildok/twentythree.stp
PASS: buildok/twentytwo.stp
PASS: buildok/two.stp
-PASS: buildok/ucontext-embedded.stp
+FAIL: buildok/ucontext-embedded.stp
PASS: buildok/ucontext-symbols-embedded.stp
PASS: buildok/ucontext-unwind-embedded.stp
PASS: buildok/uconversions.stp
@@ -6880,7 +6887,7 @@
PASS: transok/two.stp
PASS: transok/varargs.stp
Running /home/sultan/systemtap/testsuite/systemtap.printf/autoprint.exp ...
-FAIL: autoprint.exp
+PASS: autoprint.exp
Running /home/sultan/systemtap/testsuite/systemtap.printf/basic1.exp ...
PASS: systemtap.printf/basic1.stp
PASS: systemtap.printf/basic1.stp -DSTP_LEGACY_PRINT
@@ -7039,7 +7046,7 @@
PASS: current shutdown and output
Running /home/sultan/systemtap/testsuite/systemtap.stress/parallel_exec.exp ...
PASS: parallel execute - load generation
-FAIL: parallel execute - (20 * 10) != 160
+PASS: parallel execute
Running /home/sultan/systemtap/testsuite/systemtap.stress/passlist.exp ...
UNTESTED: passlist is disabled
Running /home/sultan/systemtap/testsuite/systemtap.stress/tapset_functions.exp ...
@@ -7095,7 +7102,7 @@
PASS: 32-bit access nd_syscall
PASS: 32-bit acct nd_syscall
PASS: 32-bit adjtimex nd_syscall
-PASS: 32-bit aio nd_syscall
+FAIL: 32-bit aio nd_syscall
FAIL: 32-bit alarm nd_syscall
PASS: 32-bit arch_prctl nd_syscall
PASS: 32-bit bind nd_syscall
@@ -7104,16 +7111,16 @@
PASS: 32-bit capability nd_syscall
PASS: 32-bit chmod nd_syscall
PASS: 32-bit chroot nd_syscall
-PASS: 32-bit clock nd_syscall
-PASS: 32-bit clone nd_syscall
-FAIL: 32-bit connect nd_syscall
+FAIL: 32-bit clock nd_syscall
+FAIL: 32-bit clone nd_syscall
+PASS: 32-bit connect nd_syscall
FAIL: 32-bit copy_file_range nd_syscall
PASS: 32-bit dcookie nd_syscall
PASS: 32-bit dir nd_syscall
PASS: 32-bit domainname nd_syscall
PASS: 32-bit dup nd_syscall
PASS: 32-bit eventfd nd_syscall
-FAIL: 32-bit execve nd_syscall
+PASS: 32-bit execve nd_syscall
UNSUPPORTED: 32-bit execveat nd_syscall not supported on this arch
PASS: 32-bit exit nd_syscall
PASS: 32-bit exit_group nd_syscall
@@ -7153,7 +7160,7 @@
PASS: 32-bit lseek nd_syscall
PASS: 32-bit lxattr nd_syscall
PASS: 32-bit madvise nd_syscall
-FAIL: 32-bit membarrier nd_syscall
+PASS: 32-bit membarrier nd_syscall
PASS: 32-bit memfd_create nd_syscall
PASS: 32-bit mempolicy nd_syscall
PASS: 32-bit mincore nd_syscall
@@ -7167,7 +7174,7 @@
PASS: 32-bit net1 nd_syscall
UNSUPPORTED: 32-bit nfsservctl nd_syscall not supported on this arch
UNSUPPORTED: 32-bit nice nd_syscall not supported on this arch
-FAIL: 32-bit numa nd_syscall
+PASS: 32-bit numa nd_syscall
PASS: 32-bit openclose nd_syscall
FAIL: 32-bit perf_event nd_syscall
PASS: 32-bit personality nd_syscall
@@ -7193,12 +7200,12 @@
PASS: 32-bit recv nd_syscall
PASS: 32-bit recvfrom nd_syscall
PASS: 32-bit recvmmsg nd_syscall
-FAIL: 32-bit recvmsg nd_syscall
+PASS: 32-bit recvmsg nd_syscall
PASS: 32-bit remap_file_pages nd_syscall
PASS: 32-bit rename nd_syscall
PASS: 32-bit restart_syscall nd_syscall
PASS: 32-bit robust_list nd_syscall
-FAIL: 32-bit rt_signal nd_syscall
+PASS: 32-bit rt_signal nd_syscall
PASS: 32-bit sched nd_syscall
PASS: 32-bit sched_attr nd_syscall
PASS: 32-bit sched_getaffinity nd_syscall
@@ -7237,7 +7244,7 @@
PASS: 32-bit swap nd_syscall
FAIL: 32-bit sync nd_syscall
PASS: 32-bit sync_file_range nd_syscall
-FAIL: 32-bit syncfs nd_syscall
+PASS: 32-bit syncfs nd_syscall
PASS: 32-bit sysctl nd_syscall
PASS: 32-bit sysfs nd_syscall
PASS: 32-bit sysinfo nd_syscall
@@ -7359,7 +7366,7 @@
PASS: 32-bit chmod syscall
PASS: 32-bit chroot syscall
FAIL: 32-bit clock syscall
-FAIL: 32-bit clone syscall
+PASS: 32-bit clone syscall
PASS: 32-bit connect syscall
FAIL: 32-bit copy_file_range syscall
PASS: 32-bit dcookie syscall
@@ -7371,7 +7378,7 @@
UNSUPPORTED: 32-bit execveat syscall not supported on this arch
PASS: 32-bit exit syscall
PASS: 32-bit exit_group syscall
-PASS: 32-bit fadvise64 syscall
+FAIL: 32-bit fadvise64 syscall
PASS: 32-bit fallocate syscall
PASS: 32-bit fanotify syscall
PASS: 32-bit flock syscall
@@ -7435,7 +7442,7 @@
PASS: 32-bit preadv syscall
PASS: 32-bit prlimit syscall
FAIL: 32-bit process_vm syscall
-PASS: 32-bit ptrace syscall
+FAIL: 32-bit ptrace syscall
PASS: 32-bit pwrite syscall
PASS: 32-bit pwritev syscall
PASS: 32-bit quotactl syscall
@@ -7447,12 +7454,12 @@
PASS: 32-bit recv syscall
PASS: 32-bit recvfrom syscall
PASS: 32-bit recvmmsg syscall
-PASS: 32-bit recvmsg syscall
+FAIL: 32-bit recvmsg syscall
PASS: 32-bit remap_file_pages syscall
PASS: 32-bit rename syscall
PASS: 32-bit restart_syscall syscall
PASS: 32-bit robust_list syscall
-FAIL: 32-bit rt_signal syscall
+PASS: 32-bit rt_signal syscall
PASS: 32-bit sched syscall
PASS: 32-bit sched_attr syscall
PASS: 32-bit sched_getaffinity syscall
@@ -7480,18 +7487,18 @@
PASS: 32-bit shmat syscall
PASS: 32-bit shmget syscall
PASS: 32-bit shutdown syscall
-FAIL: 32-bit sigaltstack syscall
+PASS: 32-bit sigaltstack syscall
UNSUPPORTED: 32-bit sigmask syscall not supported on this arch
PASS: 32-bit signal syscall
PASS: 32-bit signalfd syscall
PASS: 32-bit socket syscall
-PASS: 32-bit socketpair syscall
+FAIL: 32-bit socketpair syscall
PASS: 32-bit stat syscall
PASS: 32-bit statfs syscall
PASS: 32-bit swap syscall
FAIL: 32-bit sync syscall
PASS: 32-bit sync_file_range syscall
-PASS: 32-bit syncfs syscall
+FAIL: 32-bit syncfs syscall
PASS: 32-bit sysctl syscall
PASS: 32-bit sysfs syscall
PASS: 32-bit sysinfo syscall
@@ -7510,9 +7517,9 @@
PASS: 32-bit unshare syscall
PASS: 32-bit uselib syscall
PASS: 32-bit userfaultfd syscall
-FAIL: 32-bit vforkwait syscall
+PASS: 32-bit vforkwait syscall
PASS: 32-bit vhangup syscall
-FAIL: 32-bit wait syscall
+PASS: 32-bit wait syscall
FAIL: 32-bit wait4 syscall
PASS: 32-bit writev syscall
PASS: 32-bit xattr syscall
@@ -7555,7 +7562,7 @@
PASS: 32-bit fxattr tp_syscall
PASS: 32-bit getcpu tp_syscall
PASS: 32-bit getdents tp_syscall
-PASS: 32-bit getgroups tp_syscall
+FAIL: 32-bit getgroups tp_syscall
PASS: 32-bit getitimer tp_syscall
PASS: 32-bit getpeername tp_syscall
PASS: 32-bit getpriority tp_syscall
@@ -7572,7 +7579,7 @@
PASS: 32-bit ioperm tp_syscall
PASS: 32-bit ioprio tp_syscall
PASS: 32-bit itimer tp_syscall
-FAIL: 32-bit kcmp tp_syscall
+PASS: 32-bit kcmp tp_syscall
PASS: 32-bit kexec_load tp_syscall
PASS: 32-bit keyctl tp_syscall
PASS: 32-bit kill tp_syscall
@@ -7590,7 +7597,7 @@
PASS: 32-bit modify_ldt tp_syscall
PASS: 32-bit module tp_syscall
PASS: 32-bit mount tp_syscall
-FAIL: 32-bit mq tp_syscall
+PASS: 32-bit mq tp_syscall
PASS: 32-bit msg_queue tp_syscall
PASS: 32-bit net1 tp_syscall
UNSUPPORTED: 32-bit nfsservctl tp_syscall not supported on this arch
@@ -7618,10 +7625,10 @@
PASS: 32-bit readv tp_syscall
PASS: 32-bit readwrite tp_syscall
PASS: 32-bit reboot tp_syscall
-PASS: 32-bit recv tp_syscall
+FAIL: 32-bit recv tp_syscall
PASS: 32-bit recvfrom tp_syscall
FAIL: 32-bit recvmmsg tp_syscall
-PASS: 32-bit recvmsg tp_syscall
+FAIL: 32-bit recvmsg tp_syscall
PASS: 32-bit remap_file_pages tp_syscall
PASS: 32-bit rename tp_syscall
PASS: 32-bit restart_syscall tp_syscall
@@ -7635,7 +7642,7 @@
PASS: 32-bit sched_setaffinity tp_syscall
PASS: 32-bit sched_setscheduler tp_syscall
PASS: 32-bit seccomp tp_syscall
-PASS: 32-bit select tp_syscall
+FAIL: 32-bit select tp_syscall
PASS: 32-bit semctl tp_syscall
PASS: 32-bit semget tp_syscall
PASS: 32-bit semop tp_syscall
@@ -7686,7 +7693,7 @@
PASS: 32-bit userfaultfd tp_syscall
PASS: 32-bit vforkwait tp_syscall
PASS: 32-bit vhangup tp_syscall
-PASS: 32-bit wait tp_syscall
+FAIL: 32-bit wait tp_syscall
PASS: 32-bit wait4 tp_syscall
PASS: 32-bit writev tp_syscall
PASS: 32-bit xattr tp_syscall
@@ -9123,8 +9130,8 @@
PASS: unprivileged myproc: --unprivileged process.syscall.return
PASS: unprivileged myproc: --privilege=stapusr process.thread.begin
PASS: unprivileged myproc: --unprivileged process.thread.end
-FAIL: unprivileged myproc: --privilege=stapusr process(number).begin
-FAIL: unprivileged myproc: --unprivileged process(number).end
+PASS: unprivileged myproc: --privilege=stapusr process(number).begin
+PASS: unprivileged myproc: --unprivileged process(number).end
UNTESTED: unprivileged myproc: --privilege=stapusr process(number).insn
UNTESTED: unprivileged myproc: --privilege=stapusr process(number).insn.block
KFAIL: unprivileged myproc: --privilege=stapusr process(number).statement(number).absolute (PRMS: INODE_UPROBES)
@@ -9135,84 +9142,84 @@
UNTESTED: unprivileged myproc: --privilege=stapusr process(number).thread.end
PASS: unprivileged myproc: --privilege=stapusr process(number).function(number)
PASS: unprivileged myproc: --unprivileged process(number).function(number).call
-PASS: unprivileged myproc: --privilege=stapusr process(number).function(number).exported
-FAIL: unprivileged myproc: --unprivileged process(number).function(number).return
+FAIL: unprivileged myproc: --privilege=stapusr process(number).function(number).exported
+PASS: unprivileged myproc: --unprivileged process(number).function(number).return
PASS: unprivileged myproc: --privilege=stapusr process(number).function(string)
PASS: unprivileged myproc: --unprivileged process(number).function(string).call
PASS: unprivileged myproc: --privilege=stapusr process(number).function(string).callee(string)
PASS: unprivileged myproc: --unprivileged process(number).function(string).callee(string).call
PASS: unprivileged myproc: --privilege=stapusr process(number).function(string).callee(string).return
PASS: unprivileged myproc: --unprivileged process(number).function(string).callees
-PASS: unprivileged myproc: --privilege=stapusr process(number).function(string).callees(number)
+FAIL: unprivileged myproc: --privilege=stapusr process(number).function(string).callees(number)
PASS: unprivileged myproc: --unprivileged process(number).function(string).exported
PASS: unprivileged myproc: --privilege=stapusr process(number).function(string).inline
PASS: unprivileged myproc: --unprivileged process(number).function(string).label(string)
PASS: unprivileged myproc: --privilege=stapusr process(number).function(string).return
PASS: unprivileged myproc: --unprivileged process(number).mark(string)
-PASS: unprivileged myproc: --privilege=stapusr process(number).plt
+FAIL: unprivileged myproc: --privilege=stapusr process(number).plt
PASS: unprivileged myproc: --unprivileged process(number).plt.return
-FAIL: unprivileged myproc: --privilege=stapusr process(number).plt(string)
+PASS: unprivileged myproc: --privilege=stapusr process(number).plt(string)
PASS: unprivileged myproc: --unprivileged process(number).plt(string).return
PASS: unprivileged myproc: --privilege=stapusr process(number).provider(string).mark(string)
PASS: unprivileged myproc: --unprivileged process(number).statement(number)
PASS: unprivileged myproc: --privilege=stapusr process(number).statement(number).nearest
PASS: unprivileged myproc: --unprivileged process(number).statement(string)
-FAIL: unprivileged myproc: --privilege=stapusr process(number).statement(string).nearest
+PASS: unprivileged myproc: --privilege=stapusr process(number).statement(string).nearest
PASS: unprivileged myproc: --unprivileged process(string).begin
PASS: unprivileged myproc: --privilege=stapusr process(string).end
-PASS: unprivileged myproc: --unprivileged process(string).function(number)
-PASS: unprivileged myproc: --privilege=stapusr process(string).function(number).call
+FAIL: unprivileged myproc: --unprivileged process(string).function(number)
+FAIL: unprivileged myproc: --privilege=stapusr process(string).function(number).call
KFAIL: unprivileged myproc: --unprivileged process(string).function(number).inline (PRMS: GCC)
PASS: unprivileged myproc: --privilege=stapusr process(string).function(number).return
PASS: unprivileged myproc: --unprivileged process(string).function(number).exported
-PASS: unprivileged myproc: --privilege=stapusr process(string).function(string)
+FAIL: unprivileged myproc: --privilege=stapusr process(string).function(string)
PASS: unprivileged myproc: --unprivileged process(string).function(string).call
PASS: unprivileged myproc: --privilege=stapusr process(string).function(string).inline
PASS: unprivileged myproc: --unprivileged process(string).function(string).return
PASS: unprivileged myproc: --privilege=stapusr process(string).function(string).exported
-FAIL: unprivileged myproc: --unprivileged process(string).function(string).callee(string)
+PASS: unprivileged myproc: --unprivileged process(string).function(string).callee(string)
PASS: unprivileged myproc: --privilege=stapusr process(string).function(string).callee(string).call
PASS: unprivileged myproc: --unprivileged process(string).function(string).callee(string).return
PASS: unprivileged myproc: --privilege=stapusr process(string).function(string).callees
PASS: unprivileged myproc: --unprivileged process(string).function(string).callees(number)
UNTESTED: unprivileged myproc: --privilege=stapusr process(string).insn
UNTESTED: unprivileged myproc: --privilege=stapusr process(string).insn.block
-FAIL: unprivileged myproc: --privilege=stapusr process(string).library(string).function(number)
+PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(number)
PASS: unprivileged myproc: --unprivileged process(string).library(string).function(number).call
KFAIL: unprivileged myproc: --privilege=stapusr process(string).library(string).function(number).inline (PRMS: GCC)
PASS: unprivileged myproc: --unprivileged process(string).library(string).function(number).return
-PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(number).exported
+FAIL: unprivileged myproc: --privilege=stapusr process(string).library(string).function(number).exported
PASS: unprivileged myproc: --unprivileged process(string).library(string).function(string)
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(string).call
-PASS: unprivileged myproc: --unprivileged process(string).library(string).function(string).inline
+FAIL: unprivileged myproc: --unprivileged process(string).library(string).function(string).inline
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(string).return
-PASS: unprivileged myproc: --unprivileged process(string).library(string).function(string).exported
+FAIL: unprivileged myproc: --unprivileged process(string).library(string).function(string).exported
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(string).label(string)
-FAIL: unprivileged myproc: --unprivileged process(string).library(string).function(string).callee(string)
+PASS: unprivileged myproc: --unprivileged process(string).library(string).function(string).callee(string)
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(string).callee(string).call
UNTESTED: unprivileged myproc: --unprivileged process(string).library(string).function(string).callee(string).return
PASS: unprivileged myproc: --unprivileged process(string).library(string).function(string).callees
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).function(string).callees(number)
-PASS: unprivileged myproc: --unprivileged process(string).library(string).mark(string)
+FAIL: unprivileged myproc: --unprivileged process(string).library(string).mark(string)
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).provider(string).mark(string)
PASS: unprivileged myproc: --unprivileged process(string).library(string).statement(number)
PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).statement(number).nearest
PASS: unprivileged myproc: --unprivileged process(string).library(string).statement(string)
-PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).statement(string).nearest
-FAIL: unprivileged myproc: --unprivileged process(string).library(string).plt
-PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).plt.return
+FAIL: unprivileged myproc: --privilege=stapusr process(string).library(string).statement(string).nearest
+PASS: unprivileged myproc: --unprivileged process(string).library(string).plt
+FAIL: unprivileged myproc: --privilege=stapusr process(string).library(string).plt.return
PASS: unprivileged myproc: --unprivileged process(string).library(string).plt(string)
-FAIL: unprivileged myproc: --privilege=stapusr process(string).library(string).plt(string).return
+PASS: unprivileged myproc: --privilege=stapusr process(string).library(string).plt(string).return
PASS: unprivileged myproc: --unprivileged process(string).mark(string)
PASS: unprivileged myproc: --privilege=stapusr process(string).provider(string).mark(string)
-PASS: unprivileged myproc: --unprivileged process(string).statement(number)
-PASS: unprivileged myproc: --privilege=stapusr process(string).statement(number).nearest
+FAIL: unprivileged myproc: --unprivileged process(string).statement(number)
+FAIL: unprivileged myproc: --privilege=stapusr process(string).statement(number).nearest
PASS: unprivileged myproc: --unprivileged process(string).statement(string)
PASS: unprivileged myproc: --privilege=stapusr process(string).statement(string).nearest
PASS: unprivileged myproc: --unprivileged process(string).plt
PASS: unprivileged myproc: --privilege=stapusr process(string).plt.return
PASS: unprivileged myproc: --unprivileged process(string).plt(string)
-FAIL: unprivileged myproc: --privilege=stapusr process(string).plt(string).return
+PASS: unprivileged myproc: --privilege=stapusr process(string).plt(string).return
PASS: unprivileged myproc: --unprivileged process(string).syscall
PASS: unprivileged myproc: --privilege=stapusr process(string).syscall.return
PASS: unprivileged myproc: --unprivileged process(string).thread.begin
@@ -9298,14 +9305,14 @@
PASS: unprivileged myproc: --privilege=stapsys process(number).function(string).callees
PASS: unprivileged myproc: --privilege=stapsys process(number).function(string).callees(number)
PASS: unprivileged myproc: --privilege=stapsys process(number).function(string).exported
-FAIL: unprivileged myproc: --privilege=stapsys process(number).function(string).inline
+PASS: unprivileged myproc: --privilege=stapsys process(number).function(string).inline
PASS: unprivileged myproc: --privilege=stapsys process(number).function(string).label(string)
PASS: unprivileged myproc: --privilege=stapsys process(number).function(string).return
PASS: unprivileged myproc: --privilege=stapsys process(number).mark(string)
-PASS: unprivileged myproc: --privilege=stapsys process(number).plt
+FAIL: unprivileged myproc: --privilege=stapsys process(number).plt
PASS: unprivileged myproc: --privilege=stapsys process(number).plt.return
FAIL: unprivileged myproc: --privilege=stapsys process(number).plt(string)
-PASS: unprivileged myproc: --privilege=stapsys process(number).plt(string).return
+FAIL: unprivileged myproc: --privilege=stapsys process(number).plt(string).return
PASS: unprivileged myproc: --privilege=stapsys process(number).provider(string).mark(string)
PASS: unprivileged myproc: --privilege=stapsys process(number).statement(number)
PASS: unprivileged myproc: --privilege=stapsys process(number).statement(number).nearest
@@ -9356,10 +9363,10 @@
PASS: unprivileged myproc: --privilege=stapsys process(string).library(string).plt.return
PASS: unprivileged myproc: --privilege=stapsys process(string).library(string).plt(string)
PASS: unprivileged myproc: --privilege=stapsys process(string).library(string).plt(string).return
-PASS: unprivileged myproc: --privilege=stapsys process(string).mark(string)
+FAIL: unprivileged myproc: --privilege=stapsys process(string).mark(string)
PASS: unprivileged myproc: --privilege=stapsys process(string).provider(string).mark(string)
PASS: unprivileged myproc: --privilege=stapsys process(string).statement(number)
-PASS: unprivileged myproc: --privilege=stapsys process(string).statement(number).nearest
+FAIL: unprivileged myproc: --privilege=stapsys process(string).statement(number).nearest
PASS: unprivileged myproc: --privilege=stapsys process(string).statement(string)
PASS: unprivileged myproc: --privilege=stapsys process(string).statement(string).nearest
PASS: unprivileged myproc: --privilege=stapsys process(string).plt
@@ -10342,11 +10349,11 @@
=== systemtap Summary ===
-# of expected passes 8076
-# of unexpected failures 399
+# of expected passes 8049
+# of unexpected failures 429
# of unexpected successes 9
# of expected failures 346
# of known failures 82
-# of untested testcases 785
+# of untested testcases 786
# of unresolved testcases 1
# of unsupported tests 22
set -x
PHP_DEBUG_PATH=/usr/lib/debug/usr/bin/php-7.4.15-1.fc33.x86_64.debug
PHP_PATH=/usr/bin/php
addr=`nm $PHP_DEBUG_PATH | grep -w zend_std_get_debug_info | grep -w T | awk '{print $1}'`
cat > test.php << EOF
<?php
while(1)
usleep(10000);
?>
EOF
killall php
sleep 1
php test.php &
pid=`pidof php`
offset=`cat /proc/$pid/maps | grep "bin/php" | grep "r-x" | awk '{print $3}'`
start=`cat /proc/$pid/maps | grep "bin/php" | grep "r-x" | awk -F- '{print $1}'`
addr="0x$addr"
offset="0x$offset"
start="0x$start"
target=$(( $start + $addr - $offset ))
target=`printf "0x%lx\n" $target`
echo "addr $addr"
echo "offset $offset"
cat > test.stp << EOF
probe process.function("zif_usleep") {
printf("%s\n", usymname($target));
abort();
}
EOF
stap -x $pid test.stp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment