[gmpi] Re: Linux C++ question
- From: "Angus F. Hewlett" <angus@xxxxxxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Wed, 02 Mar 2005 11:36:28 +0000
Tim Hockin wrote:
On Wed, Mar 02, 2005 at 09:05:30AM +0000, Angus F. Hewlett wrote:
(there are equivalent routines on Windows). This works correctly in OS X
GCC applications, correctly in OS X dylibs for file-scope / global-scope
statics, but is broken for OS X GCC dylibs for function-scope statics.
Does anyone know or have access to Mac people who would know if this is
going to be fixed in GCC, or if there is a workaround?
OK, I found a workaround, praise be to Google:-
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3) Related to the last question, in a search of this archive I found
reports that there's a GCC bug where in dynamically loaded modules,
static objects that are within a function or block scope do not have
their destructors called correctly. It appears that instead these go
to a call to _atexit, which is supposed to be for applications (not
shared libs). I'm wondering if this has been fixed in the GCC 3.3
update? If not, is there any workaround short of ensuring that all
static objects are not within a function or block scope (a real pain
to change in my current codebase)? Could I hack something like
defining my own _atexit() function within my shared lib, which then
calls _OSRuntimeFinalizeCPP(), or something ugly like that??
This is certainly an annoying bug, but it isn't too hard to workaround.
What we did was to realize that we could link in a '*atexit*'
implementation to our bundle that would get linked to instead of the one
from the system library.
You should be able to just add this file to your bundle/shared library
project and hopefully it will start working better.
<http://www.omnigroup.com/~bungi/OGPBundleAtUnload.cpp
<http://www.omnigroup.com/%7Ebungi/OGPBundleAtUnload.cpp>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Took me a bit of headscratching to figure out how this works (how is
their static object able to manage others..?) - the clever bit is that
their object is already taking advantage of the overridden atexit mechanism.
With this in place, statics should be OK again on OS X.
Cheers,
Angus.
--
=========================================================
Angus F. Hewlett, Managing Director (CEO)
FXpansion Audio UK Ltd - http://www.fxpansion.com
Registered in the UK - #4455834 - VAT: GB 798 7782 33
=========================================================
----------------------------------------------------------------------
Generalized Music Plugin Interface (GMPI) public discussion list
Participation in this list is contingent upon your abiding by the
following rules: Please stay on topic. You are responsible for your own
words. Please respect your fellow subscribers. Please do not
redistribute anyone else's words without their permission.
Archive: //www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
Other related posts: