Hello all,

Is anyone else seeing a crash on exit with OSG applications (even  
osgviewer and the examples) under MS VS8.0 when running in the debugger?

To be specific:

* Running in Visual Studio 8.0SP1
* Debug configuration
* Mike's 3rd Party binaries for VS 8.0SP1

Repro steps: run osgviewer with cow.osg as argument (in debug properties).

A) If you just do some things and exit, no crash on exit.
B) If you press 's' (or I guess any other text - anything that will  
load osgdb_freetyped.dll to be loaded), and then exit, crash.

Running from the command line does not show any problem. I need to be  
in the debugger for it to show up.


The actual message I get is:
_______________________________________________

HEAP[osgviewerd.exe]: HEAP: Free Heap block 1d01268 modified at  
1d11d18 after it was freed
Windows has triggered a breakpoint in osgviewerd.exe.

This may be due to a corruption of the heap, and indicates a bug in  
osgviewerd.exe or any of the DLLs it has loaded.
_______________________________________________


The stack trace is:
_______________________________________________

        ntdll.dll!77212ea8()
        [Frames below may be incorrect and/or missing, no symbols loaded  
for ntdll.dll]
        ntdll.dll!77280c9a()
        ntdll.dll!7724d4c8()
        ntdll.dll!77231d37()
        ntdll.dll!77280f2b()
        ntdll.dll!77281ee4()
        ntdll.dll!77281ec8()
        ntdll.dll!77281ec8()
        ntdll.dll!7724d9fa()
        ntdll.dll!77281ec8()
        ntdll.dll!77231c21()
        ntdll.dll!77281e58()
        ntdll.dll!7724d9fa()
        ntdll.dll!77232033()
        ntdll.dll!77231c21()
        kernel32.dll!76ef7a5e()
        msvcr80d.dll!_free_base(void * pBlock=0x01d01208)  Line 109 + 0x13 
bytes        C
        msvcr80d.dll!_free_dbg_nolock(void * pUserData=0x01d01228, int  
nBlockUse=1)  Line 1388 + 0x9 bytes     C++
        msvcr80d.dll!_free_dbg(void * pUserData=0x01d01228, int  
nBlockUse=1)  Line 1220 + 0xd bytes     C++
        msvcr80d.dll!free(void * pUserData=0x01d01228)  Line 1178 + 0xb bytes   
C++
        osgdb_freetyped.dll!_FT_New_Memory()  + 0xf6 bytes
        osgdb_freetyped.dll!_ft_mem_free()  + 0x1c bytes
        osgdb_freetyped.dll!_FT_Remove_Module()  + 0x1a6 bytes
        osgdb_freetyped.dll!_FT_Remove_Module()  + 0xab bytes
        osgdb_freetyped.dll!_FT_Done_Library()  + 0xcf bytes
        osgdb_freetyped.dll!_FT_Done_FreeType()  + 0x22 bytes
        osgdb_freetyped.dll!FreeTypeLibrary::~FreeTypeLibrary()  Line 61 +  
0xc bytes       C++
        osgdb_freetyped.dll!FreeTypeLibrary::`scalar deleting destructor'()  
  + 0x16 bytes  C++
>       osg27-osgd.dll!osg::Referenced::unref()  Line 155 + 0x23 bytes  C++
   
        
osgdb_freetyped.dll!osg::ref_ptr<FreeTypeLibrary>::~ref_ptr<FreeTypeLibrary>()  
Line 30 + 0x24  
bytes   C++
        osgdb_freetyped.dll!`FreeTypeLibrary::instance'::`2'::`dynamic  
atexit destructor for 's_library''()  + 0xd bytes       C++
        osgdb_freetyped.dll!_CRT_INIT(void * hDllHandle=0x08c70000,  
unsigned long dwReason=0, void * lpreserved=0x00000001)  Line 420       C
        osgdb_freetyped.dll!__DllMainCRTStartup(void *  
hDllHandle=0x08c70000, unsigned long dwReason=0, void *  
lpreserved=0x00000001)  Line 512 + 0x11 bytes   C
        osgdb_freetyped.dll!_DllMainCRTStartup(void *  
hDllHandle=0x08c70000, unsigned long dwReason=0, void *  
lpreserved=0x00000001)  Line 462 + 0x11 bytes   C
        ntdll.dll!7723a604()
        ntdll.dll!7720a303()
        ntdll.dll!7723602a()
        ntdll.dll!7720a2e2()
        ntdll.dll!7720a38e()
        kernel32.dll!76eed85b()
        msvcr80d.dll!__crtExitProcess(int status=0)  Line 684   C
        msvcr80d.dll!doexit(int code=0, int quick=0, int retcaller=0)  Line  
596 + 0x9 bytes C
        msvcr80d.dll!exit(int code=0)  Line 398 + 0xd bytes     C
        osgviewerd.exe!__tmainCRTStartup()  Line 610    C
        osgviewerd.exe!mainCRTStartup()  Line 414       C
        kernel32.dll!76ef381b()
        ntdll.dll!7720a9bd()

________________________________________________


The last code I can inspect is in msvcr80d.dll!_free_base(void *  
pBlock). The last relevant OSG call is  
osgdb_freetyped.dll!_FT_New_Memory() called by  
osgdb_freetyped.dll!_ft_mem_free(). But I can't inspect that code.

I think I'll try to compile a local version of FreeType and see if  
it's a problem with the version that's in Mike's binaries.

In the mean time, can anyone please try to reproduce this? (see above)

Thanks,

J-S
-- 
______________________________________________________
Jean-Sebastien Guay     [EMAIL PROTECTED]
                         http://whitestar02.webhop.org/

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to