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

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