Thanks for the quick responce. I applied your patch and found that there
was also an issue with OSGShaderChunkBase not initialzing _sfGLId to 0.
After getting this far I started see the following(sorry, can't seem to
get any useful debug symbols right now.):
OSGSystemD.dll!00d61ac2()
OSGSystemD.dll!00ee57ea()
OSGSystemD.dll!007c91e2()
OSGSystemD.dll!007c92f1()
OSGSystemD.dll!007c93ca()
OSGSystemD.dll!0085313f()
OSGSystemD.dll!008468af()
OSGSystemD.dll!008464da()
> OSGBaseD.dll!osg::osgExit() Line 339 + 0x17 C++
05geometry.exe!keyboard(unsigned char k='', int x=218, int y=155)
Line 293 + 0x8 C++
glut32.dll!0032e054()
glut32.dll!0032d5de()
user32.dll!77d48734()
user32.dll!77d48816()
user32.dll!77d4c63f()
user32.dll!77d4c665()
opengl32.dll!5ed2699b()
user32.dll!77d48734()
user32.dll!77d48816()
user32.dll!77d489cd()
user32.dll!77d496c7()
glut32.dll!00324970()
glut32.dll!00324aaa()
glut32.dll!0032490f()
05geometry.exe!main(int argc=1, char * * argv=0x01e2abe0) Line 191
+ 0x8 C++
05geometry.exe!mainCRTStartup() Line 400 + 0x11 C
kernel32.dll!7c816d4f()
It seems that OpenSG 1.4.0 has this problem with every GLUT application
when compiling with Visual Studio 7.0. I have downloaded the release on
two different machines with the same results. Has anyone seen this
before, or have any clues how to track it down. I am guessing that it is
some small issue with VS 7.0 that is causing all of the problems. :(
Thanks,
Aron
Dirk Reiners wrote:
Hi Aron,
On Mon, 2005-06-20 at 14:39 -0500, Aron Bierbaum wrote:
I am trying to use RemoteAspects to share information between two
machines but get the following when exiting the application on the
remote server side:
First-chance exception at 0x009d18c2 (OSGSystemD.dll) in
RemoteAspect.exe: 0xC0000005: Access violation reading location 0x38f63434.
Unhandled exception at 0x009d18c2 (OSGSystemD.dll) in RemoteAspect.exe:
0xC0000005: Access violation reading location 0x38f63434.
When looking at the stack trace it is obvious that the object id of
3452816845 is incorrect. Does anyone have an a idea how I can track down
where this invalid id is coming from? I have tried not calling
osgExit(), but this does not seem to help the situation because Windows
still trys to clean up the data.
that's a pretty weird crash, as that is during cleanup of the
prototypes, which are never rendered and therefore should never get a
GLId. The GLIds are not explicitly initialized, but you can force it by
applying the patch below. I've also added a check to the Window to
handle this a little more gracefully, but in general this shouldn't
happen.
HIH
Dirk
Here's the patch:
Index: State/OSGProgramChunkBase.cpp
===================================================================
RCS
file: /cvsroot/opensg/OpenSG/Source/System/State/OSGProgramChunkBase.cpp,v
retrieving revision 1.5
diff -u -3 -p -r1.5 OSGProgramChunkBase.cpp
--- State/OSGProgramChunkBase.cpp 26 May 2005 22:22:46 -0000
1.5
+++ State/OSGProgramChunkBase.cpp 20 Jun 2005 20:25:09 -0000
@@ -169,7 +169,7 @@ ProgramChunkBase::ProgramChunkBase(void)
_sfProgram (),
_mfParamValues (),
_mfParamNames (),
- _sfGLId (),
+ _sfGLId (UInt32(0)),
Inherited()
{
}
Index: State/OSGProgramChunk.fcd
===================================================================
RCS
file: /cvsroot/opensg/OpenSG/Source/System/State/OSGProgramChunk.fcd,v
retrieving revision 1.1
diff -u -3 -p -r1.1 OSGProgramChunk.fcd
--- State/OSGProgramChunk.fcd 2 Mar 2003 22:04:16 -0000 1.1
+++ State/OSGProgramChunk.fcd 20 Jun 2005 20:25:09 -0000
@@ -44,6 +44,7 @@ The ProgramChunk is the base class for g
cardinality="single"
visibility="internal"
access="protected"
+ defaultValue="0"
>
The OpenGL ID of the program.
</Field>
Index: Window/OSGWindow.cpp
===================================================================
RCS file: /cvsroot/opensg/OpenSG/Source/System/Window/OSGWindow.cpp,v
retrieving revision 1.43
diff -u -3 -p -r1.43 OSGWindow.cpp
--- Window/OSGWindow.cpp 31 May 2005 22:08:10 -0000 1.43
+++ Window/OSGWindow.cpp 20 Jun 2005 20:25:09 -0000
@@ -820,10 +820,20 @@ void OSG::Window::doInitRegisterGLObject
*/
void OSG::Window::destroyGLObject(UInt32 id, UInt32 num)
{
std::vector<WindowPtr>::iterator it;
for(it = _allWindows.begin(); it != _allWindows.end(); ++it)
{
+#ifdef OSG_DEBUG
+ if(id + num > (*it)->_mfGlObjectLastReinitialize.size())
+ {
+ FWARNING(("Window::destroyGLObject:: id %d + num %d exceed"
+ "registered objects size %d!\n", id, num,
+ (*it)->_mfGlObjectLastReinitialize.size()));
+ return;
+ }
+#endif
// has the object been used in this context at all?
if((*it)->getGlObjectLastReinitialize()[id] != 0)
(*it)->_glObjectDestroyList.push_back(DestroyEntry
(id,num));
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users