Email List: Xaustin-group-lX
[All Lists]

AI 42: atexit() and dlclose()

To: Austin Group <yyyyyyyyyyyyyy@xxxxxxxxxxxxx>
Subject: AI 42: atexit() and dlclose()
From: Mark Brown <yyyyy@xxxxxxxxxx>
Date: Tue, 13 Mar 2001 14:31:48 -0600
All-

Action Item 42 was:
> The problem is the relationship between atexit() and dlopen() [and
> dlclose()]. Should atexit registered funcs be called on dlclose.
> 
> Should the behavior be run in dlcose,, or wait till exit? If wait till
> exit, is undefined behavior allowed? Implementation defined either on
> dlclose or on exit. Or make dlopen'ed modules forbidden to use atext.

The recommendation (from Ulrich Drepper via Clive Feather) was a change in
the atexit() text as shown below. Based on review I recommend that we
accept this, with the further text changes I have added:

> CX shading shown using {{shaded text}}
> 
> 
> DESCRIPTION
> 
> CX         The functionality described on this reference page is aligned with
>           the ISO C standard. Any conflict between the requirements
>           described here and the ISO C standard is unintentional. This
>           volume of IEEE Std 1003.1-200x defers to the ISO C standard.
> 
>           The atexit() function registers the function pointed to by func,
> {{CX}}    to be called without arguments at normal program termination {{or
>           when the  object  defining  the  function  is unloaded}}.
>           At normal program termination, all functions registered by the
>           atexit() function shall be called, in the reverse order of their
> {{CX}}    registration. {{On object unloading, any functions registered by the
>           object being unloaded are called in the reverse order of their
>           registration.}} An exception is that a function is called after
>           any previously registered functions that had already been called
>           at the time it was registered.

>           Normal termination occurs either by a call to
> {{CX}}    exit() or a return from main( ). {{Object unloading occurs by a
>           call to dlclose().}} At least 32 functions can be registered with
>           atexit().
> 
> CX         After a successful call to any of the exec functions, any functions
>           previously registered by atexit() shall no longer be registered.

>            After a successful call to any of the exec functions, any
>            functions previously registered by atexit() are no longer
>            registered.


Mark
-- 
Mark S. Brown                                             yyyyy@xxxxxxxxxx
Senior Technical Staff Member                    512.838.3926  T/L678.3926
AIX and Linux Technologies                           Mark Brown/Austin/IBM
IBM Corporation, Austin, Texas

<Prev in Thread] Current Thread [Next in Thread>