On Thu, 7 Nov 2024 12:23:08 +0100 Maxime Devos <maximede...@telenet.be> wrote: > ‘atexit’ functions are run at ‘exit’. ‘exit’ can be run from signal > handlers (*). Since the hook runs Scheme code, it could do a lot of > AC-unsafe things, resulting in problems. > > (*) glibc documentation says ‘exit’ is AC-unsafe, but this is > unsupported by POSIX AFAICT. OTOH the same applies to even ‘malloc’, > so likely I’m looking in the wrong places.
I think you meant async-signal-safe (AS-safe). 'exit' is not a-s-s and cannot be called in a signal handler (for example it can flush buffers) whereas '_exit' is a-s-s. Furthermore a registered handler cannot itself safely call 'exit'. I believe the main reason that use of 'atexit' or 'on_exit' is discouraged is that it does not handle abnormal process termination. (Registered handlers also don't run on termination by '_exit', but that is usually what you want.) Chris