Last active
February 25, 2021 22:30
-
-
Save kerneltoast/1f099e1d45c231cabe1df11932b4c41f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, §_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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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