The root error is that in worker_new(), at lines 353 ff., the worker
threads process signals and udev event handling requests in the same
loop.  If it happens that both the signal and the event are received
close enough together to be returned in the same epoll_wait(), and the
udev_monitor handle is listed *first* in the epoll_event list, the
worker will receive the event message (which increases the refcount on
the udevd master side), then process the signal, and immediately exit
without handling the event.

This should be handled by processing fd_signal first, and only if
SIGTERM was not received, process fd_monitor.  This ensures that we
always exit ASAP after receiving the signal, instead of going off and
processing another event that could take an indeterminate amount of
time.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/818177

Title:
  boot failures because 'udevadm exit' times out while udevd waits for
  an already-dead thread

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-release-notes/+bug/818177/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to