I looked at the orphan.patch.

Am I right that the orphans are the real childs of the process which
are temporarily reparented to the debugger ? Whatever they are, a comment
should be added to proc.h describing what does it mean.

Please provide me with a test case that demonstrates the issue
solved by the change.

The new LIST_FOREACH(&q->p_orphans) body is copy/pasted, together
with the comments, from the LIST_FOREACH(&q->p_children). Can the
common code be moved into some function ?

Shouldn't there be some assertion in proc_reparent() for the case when
we remove child from the orphans list, that the child is no longer
debugged ?

Why in proc_reparent(), in the case of P_TRACED child, you do
PROC_UNLOC/PROC_LOCK ?

It seems that now wait4(2) can be called from the real (non-debugger)
parent first and result in the call to proc_reap(), isn't it ? We would
then just reparent the child back to the caller, still leaving the
zombie and confusing debugger.

Attachment: pgpZfjlKmTwOb.pgp
Description: PGP signature

Reply via email to