[SOLVED]GC Finalization Thread AVE in atioglxx.dll

AliAkdurak

31-01-2011 10:08:17

Hello everyone

In recent effort to port our system to OpenGL I run into a strange problem. The current setting our project working is such that the render system, root and all the stuff related is created on a different thread other than the main thread program started so that I can provide OpenGL with a single non changing thread to work. Now this AVE(Access violation exception) happens in the GC finalization thread which take quite some time to take and can happen at anyplace and show up at anyline since GC thread step-in as he desires. After checking the callstack it seems this was not even our fault because it happens in atioglxx.dll . I assume this is notorious "ati driver problems" for OpenGL. I will download latest drivers and try to get an nvidia card to try out in meantime does anybody have any other suggestions about the topic. The error usually happens after I create everything but the scene object like targets and stuff just before giving command to start rendering loop.

This my driver Info I am working with mobility radeon 4500/5100(Bad drivers did not even cared to get my exact card :() series card.

Driver Package Version 8.753-100706m-102501C-ATI
Catalystâ„¢ Version 10.7
Provider ATI Technologies Inc.
2D Driver Version 8.01.01.1047
Direct3D Version 8.14.10.0768
OpenGL Version 6.14.10.10061
Catalystâ„¢ Control Center Version 2010.0706.2128.36662

Edit: Saw that there was some turkish words in the report translated them.

AliAkdurak

31-01-2011 10:27:45

Well my new version of drivers is this.

Driver Pack Version 8.812-110104a-111990C-ATI
Catalyst Version 10.7
Provider ATI Technologies Inc.
2D Driver Version 8.01.01.1114
Direct3D Version 7.14.10.0806(No idea what ATI is doing either this is a syntax mistake or they downgraded a major version....)
OpenGL Version 6.14.10.10428
Catalyst Control Center Version 2011.0104.2155.39304

But the problem still persisted at atioglxx.dll with when GC finalization thread gets on anybody has any idea.

AliAkdurak

31-01-2011 14:07:15

Ok first of all I have to apologize from my beloved ATI Video Card this was not because of this or notorious OpenGL drivers of ATI. I don't know why but If you dont hold any pointer/reference types to SceneManager or Root in your code in managed heap maybe. GC goes and does something to them underneath so you cannot get them solely from Root.Singleton or Root.Singleton.GetSceneManager("BlaBla") kind of a thing. I am not sure if this is a normal behaviour or not but I think It should not happen anyway. The reason GC throws exception because he tries to remove them from memory while OpenGL does not allow anyone other than the thread created RenderSystem. I discovered this when I run the program in Direct3D where all of this became random null reference exceptions and object not set to an instane exceptions.