[osg-users] OSG 2.1.10 crash in osgText / osgdb_freetyped

Robert Osfield robert.osfield at gmail.com
Sat Sep 15 10:15:00 PDT 2007


Hi Cedric,

This deadlock is unrelated to the problems reported in the rest of the
thread, but its still a problem that needs resolving.  I've changed
the Mutex to a ReentrantMutex, changes are attached and checked into
SVN, could you let me know if it now works.

Robert.

On 9/15/07, Cedric Pinson <mornifle at plopbyte.net> wrote:
> I dont know if it's related but i have found a deadlock
> osgText::findFontFile.
> here the code that lock:
> osgText::findFontFile("Vera.ttf");
> in fact it locks if it can't find the font.
>
> check for the **** in the source. The function findFontFile call itself
> and because of the lock (in code xxxxxxx)
> . It blocks at line (#########)
>
> std::string osgText::findFontFile(const std::string& str)
> {
>     // try looking in OSGFILEPATH etc first for fonts.
>     std::string filename = osgDB::findDataFile(str);
>     if (!filename.empty()) return filename;
>
> xxxxxxxx    OpenThreads::ScopedLock<OpenThreads::Mutex>
> lock(s_FontFileMutex);
>
>     static osgDB::FilePathList s_FontFilePath;
>     static bool initialized = false;
>     if (!initialized)
>     {
>         initialized = true;
>     #if defined(WIN32)
>         osgDB::convertStringPathIntoFilePathList(
>             ".;C:/winnt/fonts;C:/windows/fonts",
>             s_FontFilePath);
>
>         char *ptr;
>         if ((ptr = getenv( "windir" )))
>         {
>             std::string winFontPath = ptr;
>             winFontPath += "\\fonts";
>             s_FontFilePath.push_back(winFontPath);
>         }
>     #else
> ######        osgDB::convertStringPathIntoFilePathList(
>
> ".:/usr/share/fonts/ttf:/usr/share/fonts/ttf/western:/usr/share/fonts/ttf/decoratives",
>             s_FontFilePath);
>     #endif
>     }
>
>     filename = osgDB::findFileInPath(str,s_FontFilePath);
>     if (!filename.empty()) return filename;
>
>     // Try filename without pathname, if it has a path
>     filename = osgDB::getSimpleFileName(str);
>     if(filename!=str)
>     {
>         filename = osgDB::findFileInPath(filename,s_FontFilePath);
>         if (!filename.empty()) return filename;
>     }
>     else
>     {
> *****        filename =
> osgText::findFontFile(std::string("fonts/")+filename);
>         if (!filename.empty()) return filename;
>     }
>
>     // Not found, return empty string
>     osg::notify(osg::WARN)<<"Warning: font file \""<<str<<"\" not
> found."<<std::endl;
>     return std::string();
> }
>
> I have the same behaviour on 2.1.9
>
> Cedric
>
>
> Gert van Maren wrote:
> > Hi guys,
> >
> > Still getting crashes on dual core machines in osg21-osgTextd.dll /
> > osg21-osgd.dll (with 2.1.10 (also 2.1.9)). It seems to do with the
> > osgdb_freetyped.dll because when we disable all osgText in our app ->
> > the osgdb_freetyped.dll does not get loaded hence no crashes. If I
> > disable dual core in the bios, I can have text -> no crashes.
> >
> > So when running dual core -> still osgText crashes.
> >
> > below: the 'windows' output for 2 crashes and I have attached a call
> > stack as well.
> >
> > 'v3_viewerd.exe': Loaded
> > 'D:\OpenSceneGraph-2.1.10\OpenSceneGraph\bin\osgplugins-2.1.10\osgdb_freetyped.dll',
> > Symbols loaded.
> > First-chance exception at 0x00cd1161 (osg21-osgTextd.dll) in
> > v3_viewerd.exe: 0xC0000005: Access violation reading location 0x00000000.
> > First-chance exception at 0x7c812a5b in v3_viewerd.exe: Microsoft C++
> > exception: [rethrow] @ 0x00000000.
> >
> > 'v3_viewerd.exe': Loaded
> > 'D:\OpenSceneGraph-2.1.10\OpenSceneGraph\bin\osgplugins-2.1.10\osgdb_freetyped.dll',
> > Symbols loaded.
> > First-chance exception at 0x008b4232 (osg21-osgd.dll) in
> > v3_viewerd.exe: 0xC0000005: Access violation reading location 0x0006ffff.
> >
> > Hopefully this points to the bug.
> >
> > Gert
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > osg-users mailing list
> > osg-users at lists.openscenegraph.org
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Font.cpp
Type: text/x-c++src
Size: 27249 bytes
Desc: not available
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20070915/aa054606/attachment-0003.cpp>


More information about the osg-users mailing list