Hi Anthony,<br><br>I have avoided adding a mutex into the Registry::instance() method as it would incur a cost for every call to it, and it's only the very first call that it's an issue for so it's the only time you need to be careful about access to it.<br>
<br>Given I don't want to introduce a mutex one then has to make sure the instance() method is called up front in your app, and most OSG applications will call it during the single thread init of the app, and in your case you'll just need to call it explictly.   An alternative might be to have a proxy class call the instance() method, or perhaps just have the viewer constructor call instance() just in case.<br>
<br>Robert. <br><br><div class="gmail_quote">On Tue, Mar 17, 2009 at 6:25 AM, I-Nixon, Anthony D <span dir="ltr"><<a href="mailto:anthony.d.nixon@boeing.com">anthony.d.nixon@boeing.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I've encountered a crash when using CompositeViewer in Multithreaded<br>
mode due to concurrent access to osgDb::Registry::instance().<br>
<br>
The usage scenario is having two views (that have an empty scene graph -<br>
since no data has been loaded, osgdb::Registry::instance() hasn't yet<br>
been called).<br>
<br>
On the first frame, each of the render threads calls<br>
osgDb::Registry::instance(), and one gets back a null pointer (which is<br>
kind of bad for an instance :-)<br>
<br>
The fix for me is easy - just call osgDb::Registry::instance() sometime<br>
before starting rendering, but a more general solution would be better,<br>
of course.<br>
<br>
This is with OSG 2.8.0 - although there don't appear to have been any<br>
changes in this area in the trunk, either.<br>
<br>
I've only confirmed this on Windows XP and Visual C++ 8.<br>
<br>
<br>
<br>
<br>
Anthony Nixon<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br>