mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 18:55:40 +03:00
udevd: exit - process events before signals in worker
When a worker receives both a signal and a udev event in the same epoll_wait run, the event must be processed first because the udev parent considers the event already dispatched. If we process the signal first and exit, udevd times out after 60 seconds waiting for a response from an already-dead worker. Ref: https://bugs.launchpad.net/bugs/818177 Signed-off-by: Steve Langasek <steve.langasek@canonical.com>
This commit is contained in:
parent
dd2247464f
commit
7944a13a2b
@ -347,6 +347,7 @@ static void worker_new(struct event *event)
|
||||
for (i = 0; i < fdcount; i++) {
|
||||
if (ev[i].data.fd == fd_monitor && ev[i].events & EPOLLIN) {
|
||||
dev = udev_monitor_receive_device(worker_monitor);
|
||||
break;
|
||||
} else if (ev[i].data.fd == fd_signal && ev[i].events & EPOLLIN) {
|
||||
struct signalfd_siginfo fdsi;
|
||||
ssize_t size;
|
||||
|
Loading…
Reference in New Issue
Block a user