← Back to team overview

kernel-packages team mailing list archive

[Bug 1501345] Re: linux-image-3.13.0-65-generic 3.13.0-65 breaks Python based Serial communication

 

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


References