Public bug reported:

When plugging in a USB device on Ubuntu 18.04 that offers a virtual
modem/com port (typically /dev/ttyACM0) then the "modemmanager" service
will try to configure this modem/serial port automatically without user
interaction, setting dtr/rts parameters.

However sometimes USB modem devices are used as a generic serial
interface to hardware internals, without an actual serial line
connected. Setting dtr/rts makes no sense in this context, and this
feature might be unsupported.

This, however, triggers a faulty code path in the linux kernel that on
device disconnect causes a kworker process to freeze - blocking the CPU
core it is running on indefinitely.

This in turn has catastrophic effects on system stability. Some IO
calls, that run on other cores, will work without problem, while those
scheduled on the same core will never execute.

Although no "OOPS" or "PANIC" is generated, the situation is dire, as
the system typically can not be shutdown or rebooted, and during tests I
ended up with file system corruption in a few cases that could not be
fixed by a simple journal recovery


To trigger this bug, several side-conditions need to be met:
1. A USB device needs to be plugged in that provides a virtual com port
2. The device must not support setting of DTR/RTS parameters
3. A program must try to set these via ioctls
4. The device must then be disconnected
--> Kernel freeze

On Ubuntu "3." is always guaranteed, if modemmanager is installed and
the service is running

Please contact me if you need additional information about how to
reproduce this.

ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: linux-image-4.15.0-124-generic 4.15.0-124.127
ProcVersionSignature: Ubuntu 4.15.0-124.127-generic 4.15.18
Uname: Linux 4.15.0-124-generic x86_64
ApportVersion: 2.20.9-0ubuntu7.20
Architecture: amd64
AudioDevicesInUse:
 USER        PID ACCESS COMMAND
 /dev/snd/controlC0:  raven      2039 F.... pulseaudio
CurrentDesktop: XFCE
Date: Thu Nov 26 20:30:58 2020
EcryptfsInUse: Yes
HibernationDevice:
 #RESUME=UUID=de4646dc-eb1a-4530-b6bc-df659b641728
 RESUME=none
InstallationDate: Installed on 2017-04-28 (1308 days ago)
InstallationMedia: Ubuntu 16.04.2 LTS "Xenial Xerus" - Release amd64 
(20170215.2)
MachineType: FUJITSU LIFEBOOK E736
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.15.0-124-generic 
root=/dev/mapper/ubuntu--vg-root ro "acpi_osi=!Windows 2012"
RelatedPackageVersions:
 linux-restricted-modules-4.15.0-124-generic N/A
 linux-backports-modules-4.15.0-124-generic  N/A
 linux-firmware                              1.173.19
SourcePackage: linux
UpgradeStatus: Upgraded to bionic on 2019-06-28 (517 days ago)
dmi.bios.date: 12/20/2016
dmi.bios.vendor: FUJITSU // Insyde Software Corp.
dmi.bios.version: Version 1.22
dmi.board.name: FJNB293
dmi.board.vendor: FUJITSU
dmi.board.version: M4
dmi.chassis.type: 10
dmi.chassis.vendor: FUJITSU
dmi.chassis.version: LIFEBOOK E736
dmi.modalias: 
dmi:bvnFUJITSU//InsydeSoftwareCorp.:bvrVersion1.22:bd12/20/2016:svnFUJITSU:pnLIFEBOOKE736:pvr10601115935:rvnFUJITSU:rnFJNB293:rvrM4:cvnFUJITSU:ct10:cvrLIFEBOOKE736:
dmi.product.family: LIFEBOOK-FTS
dmi.product.name: LIFEBOOK E736
dmi.product.version: 10601115935
dmi.sys.vendor: FUJITSU

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug bionic

** Attachment added: "Kernel dmesg log of the freeze"
   https://bugs.launchpad.net/bugs/1905782/+attachment/5438421/+files/dmesg.log

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1905782

Title:
  kernel freeze on USB disconnect after failure to set rts/dts on USB
  VCP device

Status in linux package in Ubuntu:
  New

Bug description:
  When plugging in a USB device on Ubuntu 18.04 that offers a virtual
  modem/com port (typically /dev/ttyACM0) then the "modemmanager"
  service will try to configure this modem/serial port automatically
  without user interaction, setting dtr/rts parameters.

  However sometimes USB modem devices are used as a generic serial
  interface to hardware internals, without an actual serial line
  connected. Setting dtr/rts makes no sense in this context, and this
  feature might be unsupported.

  This, however, triggers a faulty code path in the linux kernel that on
  device disconnect causes a kworker process to freeze - blocking the
  CPU core it is running on indefinitely.

  This in turn has catastrophic effects on system stability. Some IO
  calls, that run on other cores, will work without problem, while those
  scheduled on the same core will never execute.

  Although no "OOPS" or "PANIC" is generated, the situation is dire, as
  the system typically can not be shutdown or rebooted, and during tests
  I ended up with file system corruption in a few cases that could not
  be fixed by a simple journal recovery

  
  To trigger this bug, several side-conditions need to be met:
  1. A USB device needs to be plugged in that provides a virtual com port
  2. The device must not support setting of DTR/RTS parameters
  3. A program must try to set these via ioctls
  4. The device must then be disconnected
  --> Kernel freeze

  On Ubuntu "3." is always guaranteed, if modemmanager is installed and
  the service is running

  Please contact me if you need additional information about how to
  reproduce this.

  ProblemType: Bug
  DistroRelease: Ubuntu 18.04
  Package: linux-image-4.15.0-124-generic 4.15.0-124.127
  ProcVersionSignature: Ubuntu 4.15.0-124.127-generic 4.15.18
  Uname: Linux 4.15.0-124-generic x86_64
  ApportVersion: 2.20.9-0ubuntu7.20
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  raven      2039 F.... pulseaudio
  CurrentDesktop: XFCE
  Date: Thu Nov 26 20:30:58 2020
  EcryptfsInUse: Yes
  HibernationDevice:
   #RESUME=UUID=de4646dc-eb1a-4530-b6bc-df659b641728
   RESUME=none
  InstallationDate: Installed on 2017-04-28 (1308 days ago)
  InstallationMedia: Ubuntu 16.04.2 LTS "Xenial Xerus" - Release amd64 
(20170215.2)
  MachineType: FUJITSU LIFEBOOK E736
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.15.0-124-generic 
root=/dev/mapper/ubuntu--vg-root ro "acpi_osi=!Windows 2012"
  RelatedPackageVersions:
   linux-restricted-modules-4.15.0-124-generic N/A
   linux-backports-modules-4.15.0-124-generic  N/A
   linux-firmware                              1.173.19
  SourcePackage: linux
  UpgradeStatus: Upgraded to bionic on 2019-06-28 (517 days ago)
  dmi.bios.date: 12/20/2016
  dmi.bios.vendor: FUJITSU // Insyde Software Corp.
  dmi.bios.version: Version 1.22
  dmi.board.name: FJNB293
  dmi.board.vendor: FUJITSU
  dmi.board.version: M4
  dmi.chassis.type: 10
  dmi.chassis.vendor: FUJITSU
  dmi.chassis.version: LIFEBOOK E736
  dmi.modalias: 
dmi:bvnFUJITSU//InsydeSoftwareCorp.:bvrVersion1.22:bd12/20/2016:svnFUJITSU:pnLIFEBOOKE736:pvr10601115935:rvnFUJITSU:rnFJNB293:rvrM4:cvnFUJITSU:ct10:cvrLIFEBOOKE736:
  dmi.product.family: LIFEBOOK-FTS
  dmi.product.name: LIFEBOOK E736
  dmi.product.version: 10601115935
  dmi.sys.vendor: FUJITSU

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1905782/+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

Reply via email to