Public bug reported:

What I expected to happen: Loops can be successfully created and removed from 
multiple different threads without any adverse effects
What happened instead: Udev processes ended up in D state, which soft locked 
the system (unable to reboot without resorting to "echo b > 
/proc/sysrq-trigger", various other commands [losetup -a, mount -l] would hang)

The use case that this was originally reproduced on required frequent
setup and teardown of loops in order to persist and access various
snapshots of backup files.  Through various methods of analysis, we were
able to create a script that recreates the bad behavior relatively
quickly (see attachment testudevLoopOnly.php).

We captured some stack traces from a locked up system, and found that
many of the calls were originating from loop.c.  Investigating that file
(specifically lo_setup and lo_release functions) showed that the 4.4
usage of mutexes is different from earlier versions of the kernel
package (4.4.0.142.148), which doesn't exhibit this same behavior.  It's
also different from the 4.15 version of the kernel package, which also
does not exhibit the same (incorrect) behavior.

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

** Attachment added: "Contains system info, and script to reproduce the issue"
   
https://bugs.launchpad.net/bugs/1834693/+attachment/5274042/+files/UdevSoftlock.zip

-- 
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/1834693

Title:
  Simultaneous creation and teardown of separate loops causes udev
  softlock

Status in linux package in Ubuntu:
  Incomplete

Bug description:
  What I expected to happen: Loops can be successfully created and removed from 
multiple different threads without any adverse effects
  What happened instead: Udev processes ended up in D state, which soft locked 
the system (unable to reboot without resorting to "echo b > 
/proc/sysrq-trigger", various other commands [losetup -a, mount -l] would hang)

  The use case that this was originally reproduced on required frequent
  setup and teardown of loops in order to persist and access various
  snapshots of backup files.  Through various methods of analysis, we
  were able to create a script that recreates the bad behavior
  relatively quickly (see attachment testudevLoopOnly.php).

  We captured some stack traces from a locked up system, and found that
  many of the calls were originating from loop.c.  Investigating that
  file (specifically lo_setup and lo_release functions) showed that the
  4.4 usage of mutexes is different from earlier versions of the kernel
  package (4.4.0.142.148), which doesn't exhibit this same behavior.
  It's also different from the 4.15 version of the kernel package, which
  also does not exhibit the same (incorrect) behavior.

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