Re: [PATCH] At-exit hook

Mailer <[email protected]>
Newsgroups gmane.lisp.guile.devel
Message-ID <[email protected]>
On Thu, 7 Nov 2024 12:09:25 +0000
Mailer <[email protected]> wrote:
> On Thu, 7 Nov 2024 12:23:08 +0100
> Maxime Devos <[email protected]> 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.)

I believe also that use of 'atexit' is discouraged in dynamically linked
libraries because of the uncertain timing of the unloading of the
library, but I think in fact glibc is OK with this, so I guess it may
depend on your libc.

Chris
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.