]> git.ipfire.org Git - thirdparty/systemd.git/commit
udev: Ensure udev_event_spawn reads stdout
authorPaul Davey <paul.davey@alliedtelesis.co.nz>
Tue, 26 Nov 2019 23:51:59 +0000 (12:51 +1300)
committerLennart Poettering <lennart@poettering.net>
Wed, 4 Dec 2019 09:31:37 +0000 (10:31 +0100)
commit9f537ae3100f8372579daea53c24fff917cc3257
tree1cacc64219c3365787a66b53f4e1c71c191b2189
parenteaadc03d616fab4efd18d3b517245b42106cbb73
udev: Ensure udev_event_spawn reads stdout

When running the program with udev_event_spawn it is possible to miss
output in stdout when the program exits causing the result to be empty
which can cause rules using the result to not function correctly.

This is due to the on_spawn_sigchld callback being processed while IO is
still pending and causing the event loop to exit.

To correct this the sigchld event source is made a lower priority than
the other event sources to ensure it is processed after IO.  This
requires changing the IO event source to oneshot and re-enabling it when
valid data is read but not for EOF, this prevents the empty pipes
constantly generating IO events.
src/udev/udev-event.c