On Wed, Feb 08, 2017 at 10:36:37PM +0100, Joerg Sonnenberger wrote: > Sorry, wrong rant. That was for the TLS destructor problem where similar > crude hacks exist. The FreeBSD "solution" is still wrong. Introducing > __pthread_cxa_finalize or even a public interface for that is fine. > Iterating over all text segments to guess what handlers to remove is > definitely not fine.
If we are not going to do what all others do, I would suggest the very most simple solution: Add int pthread_atfork_deregister(void (*prepare)(void), void (*parent)(void), void (*child)(void)); and make it remove the handlers from the internal list if != NULL. Then the DSO can just handle it all "manually" in a destructor function. Martin