steven
06-10-2008 07:27:34
Hey,
The problem will be hard to explain
I am part of the OGE team (www.opengamengine.org) and we are trying to create a multi-thread framework and I would like to load MyGUI as a plugin.
This plugin will be in another thread than the graphics one.
I know that MyGUI is perhaps not thread-safe but I will try anyway by making small steps first.
For now I only create and shutdown the mGUI it works fine.
Except I had to make a small change in the code.
In MyGUI_Gui.cpp I had to comment out the line 134 to avoid a segfault at shutdown:
Uncommenting this line will cause a segfault even if the MyGUI log will show that the managers did shutdown correctly:
However there is a segfault in Ogre:
Here is the callstack
My opinion is that the FontManager is destroyed to soon. In other words before the resources were totally unloaded.
Any idea how to avoid this ?
Thanks,
Steven
The problem will be hard to explain

I am part of the OGE team (www.opengamengine.org) and we are trying to create a multi-thread framework and I would like to load MyGUI as a plugin.
This plugin will be in another thread than the graphics one.
I know that MyGUI is perhaps not thread-safe but I will try anyway by making small steps first.
For now I only create and shutdown the mGUI it works fine.
Except I had to make a small change in the code.
In MyGUI_Gui.cpp I had to comment out the line 134 to avoid a segfault at shutdown:
//_ delete mFontManager;
Uncommenting this line will cause a segfault even if the MyGUI log will show that the managers did shutdown correctly:
...
14:57:32 | General | Info | LayerManager successfully shutdown | .\src\MyGUI_LayerManager.cpp | 65
14:57:32 | General | Info | * Shutdown: FontManager | .\src\MyGUI_FontManager.cpp | 36
14:57:32 | General | Info | FontManager successfully shutdown | .\src\MyGUI_FontManager.cpp | 40
14:57:32 | General | Info | * Shutdown: ControllerManager | .\src\MyGUI_ControllerManager.cpp | 31
....
etc
However there is a segfault in Ogre:
Here is the callstack
boost_thread-vc80-mt-1_34_1.dll!00c124e3()
[Frames below may be incorrect and/or missing, no symbols loaded for boost_thread-vc80-mt-1_34_1.dll]
OgreMain.dll!Ogre::ResourceGroupManager::_notifyAllResourcesRemoved(Ogre::ResourceManager * manager=) Line 923 + 0x12 bytes C++
OgreMain.dll!Ogre::ResourceManager::removeAll() Line 313 C++
OgreMain.dll!Ogre::ResourceManager::~ResourceManager() Line 52 C++
> MyGUI.dll!MyGUI::FontManager::`vector deleting destructor'() + 0x51 bytes C++
MyGUI.dll!MyGUI::Gui::shutdown() Line 134 C++
feeefeee()
My opinion is that the FontManager is destroyed to soon. In other words before the resources were totally unloaded.
Any idea how to avoid this ?
Thanks,
Steven