My project requires Ogre built with the option
#define OGRE_THREAD_SUPPORT 1
Because of this flag I am unable to make Navi function and am unsure if the error lies in Ogre or Navi.
This enables Ogre's thread supporting features (for resource loading and completion).
I'm having the Navi library die when built against this version of Ogre on the following line (in Navi.cpp LN 180)
- Code: Select all
MaterialPtr material = MaterialManager::getSingleton().create(naviName + "Material",
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
I'm building with
Navi 2.0
Awesomium 1.01 (I also tried 1.08)
Ogre 1.6.3 (with full threading support enabled)
When running the NaviDemo (Unchanged) against threaded Ogre:
- Code: Select all
Error: Unhandled exception at 0x006cb4b1 (Navi_d.dll) in NaviDemo.exe: 0xC0000005: Access violation reading location 0xccccccd0.
Call stack:
> Navi_d.dll!boost::detail::interlocked_read_acquire(volatile long * x=0xccccccd0) Line 27 + 0x3 bytes C++
Navi_d.dll!boost::detail::basic_recursive_mutex_impl<boost::detail::basic_timed_mutex>::try_recursive_lock(long current_thread_id=732) Line 79 + 0xc bytes C++
Navi_d.dll!boost::detail::basic_recursive_mutex_impl<boost::detail::basic_timed_mutex>::lock() Line 49 + 0xc bytes C++
Navi_d.dll!boost::unique_lock<boost::recursive_mutex>::lock() Line 339 C++
Navi_d.dll!boost::unique_lock<boost::recursive_mutex>::unique_lock<boost::recursive_mutex>(boost::recursive_mutex & m_={...}) Line 225 C++
Navi_d.dll!Ogre::SharedPtr<Ogre::Resource>::release() Line 201 C++
Navi_d.dll!Ogre::SharedPtr<Ogre::Resource>::~SharedPtr<Ogre::Resource>() Line 148 C++
Navi_d.dll!NaviLibrary::Navi::createMaterial() Line 181 + 0xc4 bytes C++
Navi_d.dll!NaviLibrary::Navi::Navi(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & name="__tooltip", unsigned short width=250, unsigned short height=50, const NaviLibrary::NaviPosition & naviPosition={...}, bool asyncRender=false, int maxAsyncRenderRate=70, unsigned char zOrder='Ç', NaviLibrary::Tier tier=Front, Ogre::Viewport * viewport=0x06201bb0) Line 70 C++
Navi_d.dll!NaviLibrary::NaviManager::NaviManager(Ogre::Viewport * defaultViewport=0x06201bb0, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & baseDirectory="..\Media") Line 48 + 0x85 bytes C++
NaviDemo.exe!NaviDemo::setupNavis() Line 56 + 0x69 bytes C++
Threading support *shouldn't* make any linear code break, so it may be an ogre error?
If you have any ideas on tracking this down I would be very grateful
