HI Brian,

Good detective work, looks like you are now much closer to
characterising the bug.

The bug certainly seems to be a cygwin bug, unless the OSG's handle is
being corrupted
for some reason.  This code works fine on other platforms so I
wouldn't expect the later
to be an issue.

Perhaps you could write a small example that just loadeds the osg
plugin, then unloads
it all using dlopen/dlclose calls directly rather than using
osgDB/osgconv, this would isolate
the problem to just standard unix calls.

Robert.

On Wed, May 21, 2008 at 10:17 PM, Brian Keener
<[EMAIL PROTECTED]> wrote:
> Hello folks.
>
> I just can't seem to leave this alone and now I need a little insight.
> As has been reported before when trying to use OSG on Cygwin we
> experience some hangs and I believe this has been confirmed by Alberto
> Luaces.  Working with debug version of the Cygwin Dll and debug version
> of OSG and then gdb I have acquired some understanding of where the
> hang is but now need some advice to how to move further.
>
> Robert suggested before using a simple test case of osgconv so that is
> what I have been working with and it seems the hangs are a result of
> the cygwin_osgdb_osg.dll plugin.  From my test cases (and I have not
> tested all examples ) it seems that if cygwin_osgdb_gif.dll,
> cygwin_osgdb_jpg.dll, or cygwin_osgdb_rgb.dll for example (these are
> all I have looked at) are the only dll loaded then there is no hang but
> if cygwin_osgdb_osg.dll is used I can the hang when this dll is
> attempted to be closed.
>
> My example is using gbd and osgconvd (debug version) as in:
> OSG_NOTIFY_LEVEL=INFO; export OSG_NOTIFY_LEVEL
> gdb osgconvd
>
> while in gdb I do
>
> set args cow.osg brian.osg
>
> so I am attempting convert cow.osg to brian.osg
>
> I set my breakpoint such that I can see and check the
> DynamicLibrary.cpp opens and closes and with my Notify set to INFO I
> can see in this example that cygwin_osgdb_osg.dll gets opened first and
> then cygwin_osgdb_rgb.dll.  When I hit my breakpoint on the close after
> the data has been written to brian.osg I see it is closing in the same
> order it opened so it closes cygwin_osgdb_osg.dll first (or would if it
> didn't hang on the close) and then it would close cygwin_osgdb_rgb.dll.
>
> Thinking that maybe this should be handle in a LIFO format I modified
> the open logic to do an dlList.insert instead of a dlList.push_back and
> tried again.  Now it does successfully close cygwin_osgdb_rgb.dll but
> again when it get to the close for cygwin_osgdb_osg.dll it hangs.  I
> have traced the hang to the line in dlfcn.cc which is part of Cygwin
> and I would think something has not closed that cygwin_osgdb_osg.dll
> needs to have closed before it can since some of the others seem to
> close properly but I can I find what is left open.  GDB dies eventually
> terminate on it own and below is the last of the stepping from gdb.
>
> Looking for additional thoughts
>
> bk
>
> Closing DynamicLibrary osgPlugins-2.4.0/cygwin_osgdb_osg.dll
> osgDB::DynamicLibrary::~DynamicLibrary (this=0x110cc470)
>    at /usr/src/OpenSceneGraph/src/osgDB/DynamicLibrary.cpp:69
> 69              dlclose(_handle);
> (gdb) s
> 0x610b3662 in _sigfe_dlclose ()
>    at /usr/develop/src/src/src/winsup/cygwin/cygerrno.h:31
> 31        debug_printf ("%s:%d val %d", fn, ln, val);
> (gdb) s
> dlclose (handle=0x23c9c8)
>    at /usr/develop/src/src/src/winsup/cygwin/dlfcn.cc:141
> 141     {
> (gdb) s
>
> Breakpoint 7, dlclose (handle=0x610b2c98)
>    at /usr/develop/src/src/src/winsup/cygwin/dlfcn.cc:142
> 142       int ret = -1;
> (gdb) s
> 143       if (handle == GetModuleHandle (NULL) || FreeLibrary
> ((HMODULE) handle)
> )
> (gdb) print handle
> $7 = (void *) 0x89a0000
> (gdb) s
> 1175829803 [main] osgconvd 3268 sig_send: wait for sig_complete event
> failed, si
> gnal 6, rc 258, Win32 error 0
>
> Program exited with code 03000.
> (gdb)
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to