On 7/14/21 3:37 PM, Vlad Khorsun wrote:
14.07.2021 15:29, Dimitry Sibiryakov wrote:
14.07.2021 14:25, Vlad Khorsun wrote:
   Are you sure fb_shutdown() was called before exit() ?

   isql calls fb_shutdown() in atexit() handler so it is surely called after exit().

 Yes, indeed. In isql fb_shutdown() is called as part of exit(), to be more precise. I.e. before OS loader forces unload of still loaded modules (dlls\shared objects). I don't know for sure when globals of loaded modules is destoyed by Linux loader.
In Windows case it happens when module is unloading.


For dynamically loaded modules it's also done right before module is unloaded,

One detail related to unload order - first of all dynamically loaded modules are unloaded, next globals of application is destroyed, after it globals of modules, linked with application - i.e. like fbclient in case of isql, are destroyed (not sure in what order). Such order is chosen cause it's expcted that application may call linked libraries during desruction of globals.



Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to