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
..
2023-06-13 19:59:08 -04:00
2023-06-01 12:40:05 -04:00
2023-06-01 12:40:05 -04:00
2023-06-01 12:40:05 -04:00
2024-04-10 14:53:39 -03:00
2021-09-03 22:06:44 +05:30
2021-06-02 07:32:19 +02:00