Arjun Shankar
9f0d2c0ee6
libio: Fix a deadlock after fork in popen
...
popen modifies its file handler book-keeping under a lock that wasn't
being taken during fork. This meant that a concurrent popen and fork
could end up copying the lock in a "locked" state into the fork child,
where subsequently calling popen would lead to a deadlock due to the
already (spuriously) held lock.
This commit fixes the deadlock by appropriately taking the lock before
fork, and releasing/resetting it in the parent/child after the fork.
A new test for concurrent popen and fork is also added. It consistently
hangs (and therefore fails via timeout) without the fix applied.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-10-23 13:40:16 +02:00
..
2024-02-27 10:52:58 -03:00
2020-11-23 10:51:24 +01:00
2023-06-02 01:39:48 +00:00
2024-04-02 15:28:36 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-02 01:39:48 +00:00
2024-01-01 10:53:40 -08:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2024-01-01 10:53:40 -08:00
2021-09-06 11:30:28 -04:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-10-23 13:40:16 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-06-05 14:57:54 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-04-02 15:28:36 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-07-01 17:20:30 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-02 01:39:48 +00:00
2021-09-01 14:29:59 -04:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-02 01:39:48 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-02 01:39:48 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-04-02 15:28:36 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2021-09-06 11:30:28 -04:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-06 08:23:53 -04:00
2023-06-06 08:23:53 -04:00
2023-06-06 08:23:53 -04:00
2023-06-06 08:23:53 -04:00
2023-06-06 08:23:53 -04:00
2024-08-16 16:05:20 +02:00
2023-06-06 08:23:53 -04:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-13 20:55:02 +02:00
2024-06-17 14:18:16 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2021-06-15 10:42:11 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-06-02 01:39:48 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2021-06-15 10:42:11 -03:00
2024-01-01 10:53:40 -08:00
2024-06-25 12:11:48 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-07-26 13:21:34 +01:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2021-06-15 10:42:11 -03:00
2024-01-01 10:53:40 -08:00
2021-06-15 10:42:11 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-10-24 12:31:00 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00