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

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