[patch] test/leaderkill fix

Jan Kratochvil jan.kratochvil at redhat.com
Fri Jul 6 21:48:15 UTC 2007


Hi,

here is a patch to fix the current testcase test/leaderkill (WAITPID on
a thread group where non-leader calls EXIT_GROUP).

The current PTRACE_KILL is there since Roland McGrath's original threads
implementation.


Regards,
Jan
-------------- next part --------------
2007-07-06  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* strace.c (handle_group_exit): Removed killing the threads leader.

--- strace.c	5 Jul 2007 20:03:16 -0000	1.80
+++ strace.c	6 Jul 2007 21:41:34 -0000
@@ -2121,22 +2121,17 @@ handle_group_exit(struct tcb *tcp, int s
 					/* We need to detach the leader so
 					   that the process death will be
 					   reported to its real parent.
-					   But we kill it first to prevent
-					   it doing anything before we kill
-					   the whole process in a moment.
-					   We can use PTRACE_KILL on a
-					   thread that's not already
-					   stopped.  Then the value we pass
-					   in PTRACE_DETACH just sets the
-					   death signal reported to the
-					   real parent.
-					   FIXME: This killing gets caught by
-					   WAITPID of the leader's parent.
+					   We neither kill it (as the killing
+					   would be returned to its parent by
+					   WAITPID) nor we stop it (as SIGSTOP
+					   could stop the whole process).
+					   If the leader does something
+					   unexpected there must be a race in
+					   the traced program.
 					   Testcase: test/leaderkill.c  */
-					ptrace(PTRACE_KILL, leader->pid, 0, 0);
 					if (debug)
 						fprintf(stderr,
-							" [%d exit %d kills %d]\n",
+							" [%d exit %d, leader %d]\n",
 							tcp->pid, sig, leader->pid);
 					detach(leader, sig);
 				}


More information about the Strace-devel mailing list