summaryrefslogtreecommitdiffstats
path: root/runtime/task_finder.c
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-11-25 16:20:32 -0500
committerFrank Ch. Eigler <fche@elastic.org>2008-11-25 16:20:32 -0500
commiteca9d638143b8e7e3a7ab877ea2d9b47736e5879 (patch)
tree6e6ff3f9e7a6760a9b69a9182f1dcb506d9142d7 /runtime/task_finder.c
parentd41d451cd932cdcc36cf02af5b30daf149f786d5 (diff)
downloadsystemtap-steved-eca9d638143b8e7e3a7ab877ea2d9b47736e5879.tar.gz
systemtap-steved-eca9d638143b8e7e3a7ab877ea2d9b47736e5879.tar.xz
systemtap-steved-eca9d638143b8e7e3a7ab877ea2d9b47736e5879.zip
PR7046: performance: eliminate duplicate uprobes for multithreaded programs' shlibs
Diffstat (limited to 'runtime/task_finder.c')
-rw-r--r--runtime/task_finder.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/task_finder.c b/runtime/task_finder.c
index db7a8f38..25fad1a4 100644
--- a/runtime/task_finder.c
+++ b/runtime/task_finder.c
@@ -825,7 +825,10 @@ __stp_utrace_task_finder_target_quiesce(enum utrace_resume_action action,
}
}
- if (tgt->vm_callback != NULL) {
+ /* If this is just a thread other than the thread group leader,
+ don't bother inform vm_callback clients about its memory map,
+ since they will simply duplicate each other. */
+ if (tgt->vm_callback != NULL && (tsk->tgid == tsk->pid)) {
struct mm_struct *mm;
char *mmpath_buf;
char *mmpath;