[osg-users] Moving from 3.4.1 to 3.5.7 breaks my "hardware instancing"
Andrew Cunningham
andrewC at mac.com
Wed Oct 3 08:34:57 PDT 2018
Hi Robert,
Updating to 3.6.3 fixed the problem!
I did find a possible subtle issue with 3.6.3 when OSG_NOTIFY_LEVEL=DEBUG.
No issues at other OSG_NOTIFY_LEVELs.
I am getting a crash at program exit at this line, called from GraphicsObjectManager::~GraphicsObjectManager
std::ostream& osg::notify(const osg::NotifySeverity severity)
{
if (osg::isNotifyEnabled(severity))
{
getNotifySingleton()._notifyStream.setCurrentSeverity(severity);
return getNotifySingleton()._notifyStream; <---crash here
}
return getNotifySingleton()._nullStream;
}
GraphicsObjectManager::~GraphicsObjectManager()
{
OSG_INFO<<_name<<"::~"<<_name<<"()"<<this<<std::endl;
}
My suspicion is that some "singletons" are getting destroyed in such an order that the "NotifySingleton" is destroyed before , say, the osg::ContextData is destroyed.
osg158-osgd.dll!osg::notify(const osg::NotifySeverity severity) Line 231 C++
osg158-osgd.dll!osg::GraphicsObjectManager::~GraphicsObjectManager() Line 70 C++
osg158-osgd.dll!osg::GLObjectManager::~GLObjectManager() Line 85 C++
[External Code]
osg158-osgd.dll!osg::Referenced::signalObserversAndDelete(bool signalDelete, bool doDelete) Line 292 C++
osg158-osgd.dll!osg::Referenced::unref() Line 194 C++
osg158-osgd.dll!osg::ref_ptr<osg::Referenced>::~ref_ptr<osg::Referenced>() Line 41 C++
[External Code]
osg158-osgd.dll!osg::ContextData::~ContextData() Line 35 C++
[External Code]
osg158-osgd.dll!osg::Referenced::signalObserversAndDelete(bool signalDelete, bool doDelete) Line 292 C++
osg158-osgd.dll!osg::Referenced::unref() Line 194 C++
> osg158-osgd.dll!osg::ref_ptr<osg::ContextData>::~ref_ptr<osg::ContextData>() Line 41 C++
Anyway, it's a minor issue and does not affect release code.
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=75029#75029
More information about the osg-users
mailing list