disable fork-malloc-exec for non-glibc-systems
authorJean-Louis Fuchs <jean-louis.fuchs@adfinis-sygroup.ch>
Mon, 28 Sep 2020 12:45:15 +0000 (14:45 +0200)
committerSimon McVittie <smcv@collabora.com>
Fri, 17 Dec 2021 12:55:33 +0000 (12:55 +0000)
commitd13349f25ce6160695237cb1715bc3a8e2fa8985
tree1b27b074b6d14bc6dc5a38f44b887ea8c79961ad
parentac6e6cb68a06ec022f994899dc8f490a030b4060
disable fork-malloc-exec for non-glibc-systems

Calling malloc() after fork is undefined behaviour if the process is
multi-threaded. locks held by a thread on fork() will never be released.
malloc() is usally protected by a lock and can therefore deadlock. glibc
is known not to deadlock in this case.

This commit does not rule out other problems on glibc-systems, but fixes an
issue on musl-libc-systems. Only restricting to async-signal safe functions
between fork() and exec() prevents undefined behaviour for sure. See
signal-safety(7).

(cherry picked from commit 3fab06d68f5940cde89fb9c7e647bdc48bc7b253)
dbus/dbus-sysdeps-unix.c