<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=DE link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://www.cs.wustl.edu/~schmidt/PDF/DC-Locking.pdf">http://www.cs.wustl.edu/~schmidt/PDF/DC-Locking.pdf</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<p class=MsoNormal><font size=2 color=navy face="Times New Roman"><span
style='font-size:10.0pt;color:navy'>Greetings, <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Times New Roman"><span
style='font-size:10.0pt;color:navy'>Richard </span></font><span lang=EN-GB><o:p></o:p></span></p>

</div>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>Von:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
osg-users-bounces@lists.openscenegraph.org
[mailto:osg-users-bounces@lists.openscenegraph.org] <b><span style='font-weight:
bold'>Im Auftrag von </span></b>Robert Osfield<br>
<b><span style='font-weight:bold'>Gesendet:</span></b> Dienstag, 17. März 2009
10:07<br>
<b><span style='font-weight:bold'>An:</span></b> <st1:PersonName w:st="on">OpenSceneGraph
 Users</st1:PersonName><br>
<b><span style='font-weight:bold'>Betreff:</span></b> Re: [osg-users]
Multithreading crash due toosgDb::Registry::instance()</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>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. <o:p></o:p></span></font></p>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Tue, Mar 17, 2009 at 6:25 AM, I-Nixon, Anthony D <<a
href="mailto:anthony.d.nixon@boeing.com">anthony.d.nixon@boeing.com</a>>
wrote:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>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><o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

</body>

</html>