On Nov 2 03:08, Qian Hong wrote: > Update: > > I have another case of hang: > > ?(1)-+-bash(1419290) > |-bash(1419318)---make(1423770)---sh(1423783)---sh(1423838) > |-mintty(1249269)---bash(1249277) > > |-mintty(47)---bash(55)---bash(1132827)---make(1139169)---sh(1139182)---make(1139234)---sh(1206695)---sh(1206721)---make(1206764)---sh(1206770)---make(1206783)---perl(1249042) > |-mintty(596773)---bash(596790)---pstree(1423865) > `-mintty(1417449)---bash(1417457) > > > $ ps aux | grep 1249042 > 1249042 1206783 1132827 1249050 pty0 197608 Oct 31 /usr/bin/perl > 1249077 1249042 1132827 1249092 pty0 197608 Oct 31 > /usr/bin/nm <defunct> > > > > Here the process perl(1249042) is waiting for a pipe, while its child > process nm(1249077) is in the status "defunct". nm(1249077) appears in > output of `ps aux`, but doesn't appear in output of `pstree -p -l`. > > Is there any case, where a child process can exit unexpected, but the > parent process still incorrectly wait for the child process forever?
I don't answer this question conclusively before consulting my lawyer. It *might* be possible. See fhandler_base_overlapped::close(), fhandler_base_overlapped::check_later() and flush_async_io(), all three in fhandler.cc. No, I'm not happy with using overlapped IO for pipes. I'd prefer to use nonblocking pipes instead, but the most required resource to fix this, which is least available, is time :( Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
pgp6kfIM6T8sS.pgp
Description: PGP signature