poll()/select() on a tty fd in a backgrounded process raises SIGTTIN

Jon Turney jon.turney@dronecode.org.uk
Mon Jul 25 16:52:00 GMT 2016


>> This test case is reduced from a problem seen with gdb, since commit
>> 0b333c5e, where gdb stops with SIGTTIN when the inferior is started.
>
> Did you find out where it stops and do you have any ideas how we could
> fix this?

Um.

gdb stops because a poll() on stdin (even when stdin is not ready to 
read) while backgrounded causes a SIGTTIN to be raised.

I think this caused by select.cc:peek_console/peek_pipe calling 
fhandler_termios::bg_check(SIGTTIN).

My idea for fixing it is to remove that behaviour from cygwin, assuming 
I'm right in thinking that the behaviour is incorrect, although I'm wary 
of touching something that's so old, and I don't understand why that 
call to bg_check is in there at all...




More information about the Cygwin-developers mailing list