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

Reply via email to