On Wednesday, April 9, 2025 at 06:54:34 PM EDT, Jeremy Drake via Cygwin 
<cygwin@cygwin.com> wrote:

> The recent issue with pthread_atfork handlers reminded me of a scenario
> that I know glibc handles, but it seems that Cygwin does not.  Test case:

<... code that loads a shared lib, registers some functions in shared lib with 
pthread_atfork(), unloads the shared lib, and crashes on fork...>

Calling functions in an unloaded library should result in undefined behavior.

However, further investigation reveals that the Linux pthread_atfork() 
registered functions are not being called and POSIX does not proved a mechanism 
for un-registering these functions.   Note: pthread_atfork() is not bumping the 
ref count on the shared lib--those functions are definitely unavailable after 
the dlclose()

In the Cygwin version, calling the functions in the unloaded library when the 
fork happens causes the crash.

This seems to be a bug with fork(), if it is a bug at all.

Kevin

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to