Blame SOURCES/ltrace-0.7.91-multithread-no-f-2.patch

03779e
From 72ee29639c55b5942bc07c8ed0013005f8fc5a97 Mon Sep 17 00:00:00 2001
03779e
From: Petr Machata <pmachata@redhat.com>
03779e
Date: Wed, 8 Apr 2015 07:14:10 -0400
03779e
Subject: [PATCH 2/2] Fix tracing multi-threaded processes without -f
03779e
03779e
- In handle_syscall, we avoid touching stack of ignored processes.
03779e
  But in handle_sysret, we require a sysret-like stack entry even
03779e
  for ignored processes, even though we then go ahead to not act
03779e
  on that stack entry.  Instead, for ignored processes, avoid looking
03779e
  at stack trace at all.
03779e
---
03779e
 handle_event.c                          | 10 +++++-----
03779e
 testsuite/ltrace.main/main-threaded.exp |  1 +
03779e
 2 files changed, 6 insertions(+), 5 deletions(-)
03779e
03779e
diff --git a/handle_event.c b/handle_event.c
03779e
index 6fa7e98..c2550ad 100644
03779e
--- a/handle_event.c
03779e
+++ b/handle_event.c
03779e
@@ -619,12 +619,12 @@ handle_x_sysret(Event *event, char *(*name_cb)(struct process *, int))
03779e
 	debug(DEBUG_FUNCTION, "handle_x_sysret(pid=%d, sysnum=%d)",
03779e
 	      event->proc->pid, event->e_un.sysnum);
03779e
 
03779e
-	unsigned d = event->proc->callstack_depth;
03779e
-	assert(d > 0);
03779e
-	struct callstack_element *elem = &event->proc->callstack[d - 1];
03779e
-	assert(elem->is_syscall);
03779e
-
03779e
 	if (event->proc->state != STATE_IGNORED) {
03779e
+		unsigned d = event->proc->callstack_depth;
03779e
+		assert(d > 0);
03779e
+		struct callstack_element *elem = &event->proc->callstack[d - 1];
03779e
+		assert(elem->is_syscall);
03779e
+
03779e
 		struct timedelta spent = calc_time_spent(elem->enter_time);
03779e
 		if (options.syscalls)
03779e
 			output_syscall_right(event->proc,
03779e
diff --git a/testsuite/ltrace.main/main-threaded.exp b/testsuite/ltrace.main/main-threaded.exp
03779e
index cead82d..aca7afd 100644
03779e
--- a/testsuite/ltrace.main/main-threaded.exp
03779e
+++ b/testsuite/ltrace.main/main-threaded.exp
03779e
@@ -60,5 +60,6 @@ set bin [ltraceCompile {} $libprint -lpthread [ltraceSource c {
03779e
 }]]
03779e
 
03779e
 ltraceMatch1 [ltraceRun -f -l libprint.so -- $bin] {print\(} == 30
03779e
+ltraceMatch1 [ltraceRun -L -- $bin] exited == 1
03779e
 
03779e
 ltraceDone
03779e
-- 
03779e
2.1.0