From 6d0f3f0cc2931c2ad29b57f4fecdde3ccc210d8c Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Sat, 2 Aug 2008 16:28:50 -0400 Subject: PR4225: signs of life --- runtime/task_finder.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'runtime') diff --git a/runtime/task_finder.c b/runtime/task_finder.c index b22a60a8..f6c13dcf 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -1,5 +1,15 @@ +#ifndef TASK_FINDER_C +#define TASK_FINDER_C + +#if ! defined(CONFIG_UTRACE) +#error "Need CONFIG_UTRACE!" +#endif + +#include #include #include +#include + #include "syscall.h" #include "task_finder_vma.c" @@ -915,6 +925,7 @@ stap_start_task_finder(void) struct task_struct *grp, *tsk; char *mmpath_buf; + debug_task_finder_report(); mmpath_buf = _stp_kmalloc(PATH_MAX); if (mmpath_buf == NULL) { _stp_error("Unable to allocate space for path"); @@ -1034,3 +1045,6 @@ stap_stop_task_finder(void) debug_task_finder_report(); atomic_set(&__stp_task_finder_state, __STP_TF_STOPPED); } + + +#endif /* TASK_FINDER_C */ -- cgit From 48e685da27141914cff14dc6ea92aebbb74c5906 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Sat, 2 Aug 2008 22:21:35 -0400 Subject: PR4225: it's alive, alive! --- runtime/task_finder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime') diff --git a/runtime/task_finder.c b/runtime/task_finder.c index f6c13dcf..a4e18578 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -547,7 +547,7 @@ __stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine, // Call the callback rc = tgt->callback(tsk, 0, - (atomic_read(&tsk->signal->live) == 0), + (tsk->signal == NULL) || (atomic_read(&tsk->signal->live) == 0), tgt); if (rc != 0) { _stp_error("death callback for %d failed: %d", -- cgit From 44ab6f3be72e7b5eeaa2514cea0553b87007ee9c Mon Sep 17 00:00:00 2001 From: Jim Keniston Date: Tue, 5 Aug 2008 14:39:01 -0700 Subject: Fix i386 dwarf_register_4() to work in uprobe handlers. --- runtime/loc2c-runtime.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'runtime') diff --git a/runtime/loc2c-runtime.h b/runtime/loc2c-runtime.h index 215676ee..1247da51 100644 --- a/runtime/loc2c-runtime.h +++ b/runtime/loc2c-runtime.h @@ -113,16 +113,13 @@ kernel mode, it is not saved in the trap frame (struct pt_regs). The `esp' (and `xss') fields are valid only for a user-mode trap. For a kernel mode trap, the interrupted state's esp is actually an - address inside where the `struct pt_regs' on the kernel trap stack points. - - For now we assume all traps are from kprobes in kernel-mode code. - For extra paranoia, could do BUG_ON((regs->xcs & 3) == 3). */ + address inside where the `struct pt_regs' on the kernel trap stack points. */ #define dwarf_register_0(regs) regs->eax #define dwarf_register_1(regs) regs->ecx #define dwarf_register_2(regs) regs->edx #define dwarf_register_3(regs) regs->ebx -#define dwarf_register_4(regs) ((long) ®s->esp) +#define dwarf_register_4(regs) (user_mode(regs) ? regs->esp : (long)®s->esp) #define dwarf_register_5(regs) regs->ebp #define dwarf_register_6(regs) regs->esi #define dwarf_register_7(regs) regs->edi -- cgit From c16d425a5dd60fd86efb76a429b65f87dfb5e44a Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Fri, 22 Aug 2008 12:10:17 -0400 Subject: pr4225: fix shared library address range checks; make more task_finder_vma tracing conditional on DEBUG_TASK_FINDER_VMA --- runtime/task_finder_vma.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'runtime') diff --git a/runtime/task_finder_vma.c b/runtime/task_finder_vma.c index 9d43e36c..c06b3db0 100644 --- a/runtime/task_finder_vma.c +++ b/runtime/task_finder_vma.c @@ -133,11 +133,13 @@ __stp_tf_add_vma(struct task_struct *tsk, unsigned long addr, hlist_for_each_entry(entry, node, head, hlist) { if (tsk->pid == entry->pid && addr == entry->addr) { - printk(KERN_NOTICE - "vma (pid: %d, vm_start: 0x%lx) present?\n", - tsk->pid, vma->vm_start); - mutex_unlock(&__stp_tf_vma_mutex); - return -EBUSY; /* Already there */ +#if DEBUG_TASK_FINDER_VMA + printk(KERN_NOTICE + "vma (pid: %d, vm_start: 0x%lx) present?\n", + tsk->pid, vma->vm_start); +#endif + mutex_unlock(&__stp_tf_vma_mutex); + return -EBUSY; /* Already there */ } } -- cgit From 474c9b2c70e8ae6d4b811bc0ee5ce1319592892d Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Mon, 1 Sep 2008 13:44:53 -0400 Subject: fix #if->#ifdef DEBUG_TASK_FINDER_VMA --- runtime/task_finder_vma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime') diff --git a/runtime/task_finder_vma.c b/runtime/task_finder_vma.c index c06b3db0..8c60175e 100644 --- a/runtime/task_finder_vma.c +++ b/runtime/task_finder_vma.c @@ -133,7 +133,7 @@ __stp_tf_add_vma(struct task_struct *tsk, unsigned long addr, hlist_for_each_entry(entry, node, head, hlist) { if (tsk->pid == entry->pid && addr == entry->addr) { -#if DEBUG_TASK_FINDER_VMA +#ifdef DEBUG_TASK_FINDER_VMA printk(KERN_NOTICE "vma (pid: %d, vm_start: 0x%lx) present?\n", tsk->pid, vma->vm_start); -- cgit From ccf26785e0a524c0cd510d83906cf9b4a1d77515 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Mon, 1 Sep 2008 16:26:43 -0400 Subject: PR4225: post-merge changelogs --- runtime/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'runtime') diff --git a/runtime/ChangeLog b/runtime/ChangeLog index b7e44a0f..e02c5f0b 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,3 +1,8 @@ +2008-09-01 Frank Ch. Eigler + + * task_finder.c: Move CONFIG_UTRACE assertion here. + * task_finder_vma.c (__stp_tf_add_vma): Make printk conditional. + 2008-08-29 David Smith * task_finder.c (__stp_utrace_attach_match_filename): Don't call -- cgit