** Description changed: From https://lkml.org/lkml/2014/10/10/345 - ##### Commit f95499c3030f ("n_tty: Don't wait for buffer work in read() loop") - introduces a race window where a pty master can be signalled that the ptyslave was closed before all the data that the slave wrote is delivered.Commit f8747d4a466a ("tty: Fix pty master read() after slave closes") fixed theproblem in case of n_tty_read, but the problem still exists for n_tty_poll.This can be seen by running 'for ((i=0; i<100;i++));do ./test.py ;done'where test.py is: + introduces a race window where a pty master can be signalled that the ptyslave was closed before all the data that the slave wrote is delivered. + Commit f8747d4a466a ("tty: Fix pty master read() after slave closes") fixed theproblem in case of n_tty_read, but the problem still exists for n_tty_poll.This can be seen by running 'for ((i=0; i<100;i++));do ./test.py ;done'where test.py is: import os, select, pty (pid, pty_fd) = pty.fork() if pid == 0: - os.write(1, 'This string should be received by parent') + os.write(1, 'This string should be received by parent') else: - poller = select.epoll() - poller.register( pty_fd, select.EPOLLIN ) - ready = poller.poll( 1 * 1000 ) - for fd, events in ready: - if not events & select.EPOLLIN: - print 'missed POLLIN event' - else: - print os.read(fd, 100) - poller.close() + poller = select.epoll() + poller.register( pty_fd, select.EPOLLIN ) + ready = poller.poll( 1 * 1000 ) + for fd, events in ready: + if not events & select.EPOLLIN: + print 'missed POLLIN event' + else: + print os.read(fd, 100) + poller.close() The string from the slave is missed several times. This patch takes the same approach as the fix for read and special casesthis condition for poll. Tested on 3.16. ##### This is has been merged to Linus Torvalds branch: https://github.com/torvalds/linux/commit/c4dc304677e8d566572c4738d95c48be150c6606 This would be needed to be implemented in to 3.13 kernel too. As both 12.04 and 14.04 is currently running the Trusty LTS it affectes both. br, Björn
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1397976 Title: tty hangup regression in 3.13 kernel (trusty LTS) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-lts-trusty/+bug/1397976/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs