I also found it first in PySerial, but it affects everything down to the underlying poll() implementation. Demo C code is attached (compile with -Wall -std=gnu99). Under -63 the poll() call blocks for the 1 second it's supposed to, a ping is sent once a second, and if you short pins 2-3 of the serial port the ping loops back and the code starts running I/O bound; pinging as fast as it can until you remove the screwdriver.
Under -65 poll() returns immediately even with nothing to read and the console I/O is the only thing restraining the process. In short, this is a driver bug, not a Python specific thing, and most likely breaks any code that relies on select, poll, or epoll for serial I/O. ** Attachment added: "Code demonstrating poll() problem in 3.13.0-65-generic" https://bugs.launchpad.net/ubuntu/+source/linux-lts-trusty/+bug/1501345/+attachment/4485041/+files/serialpoll.c -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux-lts-trusty in Ubuntu. https://bugs.launchpad.net/bugs/1501345 Title: linux-image-3.13.0-65-generic 3.13.0-65 breaks Python based Serial communication Status in linux-lts-trusty package in Ubuntu: Confirmed Bug description: Today after updating to the linux-image-3.13.0-65-generic 3.13.0-65 Kernel on Lubuntu 14.04.3 LTS two different programs that rely on PySerial quit working. miniterm.py and my ROS (Robot Operating System) based Python node quit working. When rebooted and selected 3.13.0-63-generic via GRUB everything worked again. Here are the steps to create the issue with miniterm.py, note that you need something connected via a USB to Serial adapter for this to work. I am working with a Parallax Activity Board, but an Arduino should also exhibit the same behavior. sudo apt install linux-image-3.13.0-65-generic sudo apt install linux-image-extra-3.13.0-65-generic reboot $ miniterm.py /dev/ttyUSB0 115200 --- Miniterm on /dev/ttyUSB0: 115200,8,N,1 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- --- exit --- Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "/usr/bin/miniterm.py", line 220, in reader data = character(self.serial.read(1)) File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 460, in read raise SerialException('device reports readiness to read but returned no data (device disconnected?)') SerialException: device reports readiness to read but returned no data (device disconnected?) Reverting to the 3.13.0-63 kernel allows miniterm.py and other Python Serial based programs to work normally. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-lts-trusty/+bug/1501345/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp