The Code Kingdom

viva la programmers!

Skip to content

Navi + Thread safe Ogre

Get help and support for NaviLibrary

Navi + Thread safe Ogre

Postby Rambus » Wed Nov 11, 2009 12:09 am

Hello,

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 :)

Rambus
 
Posts: 2
Joined: Tue Nov 10, 2009 11:56 pm


Re: Navi + Thread safe Ogre

Postby Rambus » Wed Nov 25, 2009 11:07 pm

Hello,

This was just one of many problems I encountered with the threaded build of Ogre, as such I have decided to use Vanilla Ogre and handle all threading externally.

Thanks to those who read this post.


Edit: For clarification, this error occurs in the example program, where resource loading and ogre are both on the same thread (in fact no other threads are being used).

Rambus
 
Posts: 2
Joined: Tue Nov 10, 2009 11:56 pm


Return to Get Help

Who is online

Users browsing this forum: No registered users and 1 guest