Hello Carsten,

I just wanted to confirm that this issue is fixed for us.
I found out that a colleaque of me had compiled an additional field container 
type into our main application a long time ago.
When I added that extension library unloading that old field container inside 
the main app seemed to cause that crash during osgExit().
I simply moved it to our extension library and everything seems to run fine 
again!

Thanks for your support,
Michael

-------- Original-Nachricht --------
> Datum: Mon, 16 May 2011 14:11:48 -0500
> Von: Carsten Neumann <carsten_neum...@gmx.net>
> An: opensg-users@lists.sourceforge.net
> Betreff: Re: [Opensg-users] OpenSG1.8 - Crash in osgExit()

>       Hello Michael,
> 
> On 05/16/2011 01:14 PM, Michael Raab wrote:
> > I'm calling osgExit() explicitly before shutting down our application.
> > I don't see any reason why our extension library should be already
> > unloaded at this moment.
> > Do you have an idea how I can track down the field container type causes
> > that problem.
> 
> only the two more or less obvious choices of running everything under a 
> debugger and digging backwards from the crash's stack trace and perhaps 
> putting a printf() into FieldContainerFactory::terminate(), inside the 
> for loop to at least get the type id it crashes on.
> 
> > Which function is called for each FC type during shutdown?
> 
> FieldContainerType::terminate().
> 
> > Are there any log messages are generated?
> 
> not that I've seen it, looking over the code.
> 
> However, I did see that osgExit() does this:
> 
> SharedObjectHandler::the()->terminate();
> 
> if(osgSystemExitFunctions != NULL)
> {
>      for(Int32 i = osgSystemExitFunctions->size() - 1; i >= 0; i--)
>      {
>          returnValue &= (*osgSystemExitFunctions)[i]();
> 
>          if(returnValue == false)
>              break;
>      }
> }
> 
> Can you try moving the call to SharedObjectHandler::terminate() after 
> the "if"? Or use 
> SharedObjectHandler::the()->removeSharedObject("your_library_name"); 
> before calling osgExit() to unload your extension library.
> 
> Normally unloading a shared lib would result in the types deregistering 
> themselves, but if GlobalSystemState == Shutdown (one of the first 
> things osgExit does is setting this), this does not happen - so this is 
> a bug. I'm not sure yet if adjusting osgExit as above is the correct way 
> to fix this.
> 
>       Cheers,
>               Carsten
> 
> ------------------------------------------------------------------------------
> Achieve unprecedented app performance and reliability
> What every C/C++ and Fortran developer should know.
> Learn how Intel has extended the reach of its next-generation tools
> to help boost performance applications - inlcuding clusters.
> http://p.sf.net/sfu/intel-dev2devmay
> _______________________________________________
> Opensg-users mailing list
> Opensg-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensg-users

-- 
NEU: FreePhone - kostenlos mobil telefonieren und surfen!                       
Jetzt informieren: http://www.gmx.net/de/go/freephone

------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to