ptrace_resume()->send_sig() can hit the dead task without ->signal.
Add the temporary fix.

This change should be reverted later,
signals-introduce-do_send_sig_info-helper.patch in -mm tree fixes
this problem "by accident". Until then, make sure at least this bug
won't add a noise during the testing.

---

--- PU/kernel/ptrace.c~03_SEND_SIG      2009-08-13 17:04:49.000000000 +0200
+++ PU/kernel/ptrace.c  2009-08-13 17:35:29.000000000 +0200
@@ -1052,8 +1052,13 @@ static int ptrace_resume(struct task_str
                         * After a syscall stop, @data is treated specially.
                         * It just queues the signal.
                         */
-                       if (data)
-                               send_sig(data, child, 1);
+                       if (data) {
+                               /* XXX: until do_send_sig_info() */
+                               read_lock(&tasklist_lock);
+                               if (child->signal)
+                                       send_sig(data, child, 1);
+                               read_unlock(&tasklist_lock);
+                       }
                        data = 0;
                        event = 0;
                        break;

Reply via email to