Anders,

I think I am seeing the same behaviour as you.

My environment is MSVC7.1.

The plugin dll crashes during its initialisation phase when the global
reader writer proxy object is created by the runtime.

I swapped over to the debug builds of the dae and stuck a breakpoint in the
ReaderWriterDAE constructor.

If you use the debug build you can step into the 

        dae_ = new DAE();

call. I found that the dll crashes back to the operating system.

The crash looks to be a divide by zero caused by the following line in
daeArray::grow

        size_t newCapacity = newSize/_elementSize;

_elementSize is for some reason is zero. I have not looked any further.

The stack looks like this.

        osgdb_daeD.dll!daeArray::grow(unsigned int sz=0)  Line 67       C++
        osgdb_daeD.dll!daeTArray<char const *>::set(unsigned int index=0,
const char * const & value=0x0167cf30)  Line 204        C++
        osgdb_daeD.dll!daeTArray<char const *>::append(const char * const &
value=0x0167cf30)  Line 222     C++
        osgdb_daeD.dll!daeStringTable::allocateBuffer()  Line 26        C++
        osgdb_daeD.dll!daeStringTable::allocString(const char *
string=0x01a45348)  Line 37 + 0x8       C++
>       osgdb_daeD.dll!daeStringRef::daeStringRef(const char *
string=0x01a45348)  Line 20 + 0xe       C++
        osgdb_daeD.dll!registerDomTypes()  Line 25 + 0x13       C++
        osgdb_daeD.dll!initializeDomMeta()  Line 23     C++
        osgdb_daeD.dll!DAE::DAE()  Line 59 + 0x5        C++
        osgdb_daeD.dll!ReaderWriterDAE::ReaderWriterDAE()  Line 34 + 0x1f
C++
 
osgdb_daeD.dll!osgDB::RegisterReaderWriterProxy<ReaderWriterDAE>::RegisterRe
aderWriterProxy<ReaderWriterDAE>()  Line 535 + 0x1f     C++
        osgdb_daeD.dll!$E7()  Line 139 + 0xd    C++
        msvcr71d.dll!_initterm(void (void)* * pfbegin=0x01b69098, void
(void)* * pfend=0x01b690b4)  Line 600   C
        osgdb_daeD.dll!_CRT_INIT(void * hDllHandle=0x01720000, unsigned long
dwReason=1, void * lpreserved=0x00000000)  Line 184 + 0xf       C
        osgdb_daeD.dll!_DllMainCRTStartup(void * hDllHandle=0x01720000,
unsigned long dwReason=1, void * lpreserved=0x00000000)  Line 266 + 0x11


Could this be some kind of dll class interface export problem. Or maybe the
global objects are being initialised in the wrong order.

Roger

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:osg-users-
> [EMAIL PROTECTED] On Behalf Of Andreas Ekstrand
> Sent: 27 September 2006 09:08
> To: osg users
> Subject: Re: [osg-users] Collada plugin not working
> 
> Marcus,
> 
> Thanks for the suggestions. I would really appreciate it if you, or
> anyone else, could update the dae plugin from the latest cvs and verify
> that it's not only me seeing this behavior.
> 
> >Is it the only OSG plugin that behaves this way?
> >
> >
> Yes, I haven't seen this behavior in other plugins, and it's perfectly
> reproducable by exchanging the modified cpp/h files - with the new files
> the DLL is not loaded, with the old files it works fine. By the way, I'm
> sure the DLL is found, OSGNOTIFYLEVEL=DEBUG told me that.
> 
> The LoadLibrary documentation didn't tell me much. Do you know how to
> investigate a DLLs entry point function? I'm afraid my knowledge in that
> area is somewhat limited...
> 
> /Andreas
> 
> --
> ________________________________________________________________________
> Andreas Ekstrand
> Remograph
> Rekrytgatan 10
> SE-582 14 Linköping
> SWEDEN
> Website: http://www.remograph.com
> E-mail: [EMAIL PROTECTED]
> 
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://openscenegraph.net/mailman/listinfo/osg-users
> http://www.openscenegraph.org/


_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to