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

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