Re: waitpid(WNOHANG) should report SIGCHLD-notified signals [Re:[PATCH 09/11] job control: reorganize wait_task_stopped()]

From: Jan Kratochvil
Date: Sun May 15 2011 - 13:49:04 EST


Hi Tejun,

On Sun, 15 May 2011 18:47:05 +0200, Tejun Heo wrote:
> Hmmm... I could easily be wrong but AFAICS that shouldn't happen. If
> you can reproduce the problem, please let us know.

I was unable to reproduce it before so OK, I will follow now your statement.


> > But if it is a case it should be fixed as there is no later notification when
> > to call waitpid(WNOHANG) again. And sure the debugger cannot busy-loop poll
> > it.
>
> But, the current WNOHANG wait is racy. It's unlikely but definitely
> possible for WNOHANG to fail when it's expected to succeed (not the
> above case but more convoluted ones).

OK, so FYI it breaks current GDB.


> But, just out of curiosity, is there any reason the ptracer itself
> should be doing something other than waitpid() while tracee is
> running? It's not like ptrace requests can be issued during that time
> and sleeping waitpid() is way saner mechanism to wait for tracee
> events than signal.

If the debugger wants to be single-threaded ("poll() model", not "threads
model") and it wants to communicate with user and examine debuggee symbols and
memory data it cannot use sleeping wait. GDB is single-threaded and it
supports `set target-async 1': info '(gdb)Background Execution'


Thanks,
Jan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/