SIGCHLD race condition?
mouring at etoh.eviladmin.org
mouring at etoh.eviladmin.org
Thu Oct 4 04:47:59 EST 2001
On Wed, 3 Oct 2001, Nicolas Williams wrote:
> No, Paul meant to open a pipe when there are no child fildes left to
> select for and all you have to do is wait for client input or the child
> to die -- since select() can't do the waiting, the next best thing is
> for the SIGCHLD handler to write into this pipe whose read end you can
> select() for.
>
> It's a neat trick. SIGCHLD arrives and the handler reaps the child and
> writes a byte to this place holder pipe, then, when the select() loop is
> entered you come out because there's that byte in the pipe, you check
> the child terminated variable and you exit. No more race condition.
>
Neat trick, but I've seen scp terminate with a SIGCHLD before the pipe was
empty.
I guess I'd have to see the code since I get a feeling we could lose data
on non-interactive session with this trick. I'd rather track down what C
code is holding the offending file descriptor past's the due date and
rework the code. I'm not too much a fan of repeating the last 'scp
missing data' thread.
But I'd be damned if I can find it. <frown>
- Ben
More information about the openssh-unix-dev
mailing list