On Feb 12 11:24, Takashi Yano wrote: > On Tue, 11 Feb 2020 22:31:12 +0100 > Peter Dons Tychsen wrote: > > On Tue, 2020-02-11 at 22:16 +0900, Takashi Yano wrote: > > > however, I found the real cause is that errno is accidentally set > > > by kill() in pty system calls. That is, the problem is not in the > > > kill() itself but in usage of it. Cygwin older than 3.1.0 does not > > > have these code in pty. > > > > OK, is there a fix for that or is that the fix you already pushed? And > > what is wrong with the usage of kill(). How can kill() be used > > incorrectly? > > POSIX system calls set global variable errno to appropriate > value when the system calls fail. > http://man7.org/linux/man-pages/man3/errno.3.html > > My failure in pty code was that I used kill() in pty system > calls. kill() can be used check if the process is still alive > by passing signal number of 0 to the second argument. It returns > -1 if the process already exited. However, in this case errno > is set to ESRCH. As a result, the errno value which pty system > call set is accidentally overwritten by kill(). > > The patch was already accepted and pushed to git repository. > I hope cygwin 3.1.3 which applied this patch will be released > shortly. For a first test, please try the latest developer snapshot on https://cygwin.com/snapshots/ Thanks, Corinna -- Corinna Vinschen Cygwin Maintainer