PDA

View Full Version : glGetError gives 0xc0000005



Neonic
11-23-2009, 01:59 PM
Hello, I'm a guy with two computers and I made an openGL application. This application used to work on both machines, but since lately it crashes on one of my machines and I haven't made any recent changes to it.

During debug, I've found out that the crash occurs at one of the calls to 'glGetError'. It doesn't occur at the first call to 'glGetError'.

The error code is always 0xc0000005.

I've also seen some of my non-openGL applications act weird on this machine, but they don't crash.

Does anyone know what 0xc0000005 on glGetError means? It could help me fix my computer.

I'm running in windows XP home edition on the computer that crashes. The other one uses windows XP professional.

yooyo
11-23-2009, 02:16 PM
Which hardware and drivers you use on machine where your program crash?

Jan
11-23-2009, 02:23 PM
gluGetErrorString or something like that gives you the meaning of the error.

Neonic
11-23-2009, 02:29 PM
gluGetErrorString or something like that gives you the meaning of the error.

0xc0000005 is not returned by glGetError. It's the error code I see in the error report in windows, after the program crashes.

Neonic
11-23-2009, 02:38 PM
Which hardware and drivers you use on machine where your program crash?

This is on the receipt that I got when I bought the computer:

CPU intel dual core E2180 2.0 Ghz FSB800 S775

asus geforce 9600gt 256 MB Silent

Asus M2N-MX SE

DVD Brander

Western Digital 160 GB SATA II

GMB Cardreader

1GB DDR2
1GB DDR2

450 Watt ATX PSU

Codegen 3330 Miditower

Simon Arbon
11-23-2009, 07:13 PM
Many exception errors are not processed by applications.
The most common exception error is EXCEPTION_ACCESS_VIOLATION (c0000005).
It occurs when a pointer is dereferenced and the pointer points to inaccessible memory or a write operation is attempted on read-only memory.
If an application does not trap an exception, the Win32 module, UnhandledExceptionFilter, will do one of the following: display a message box, invoke Dr. Watson, or attach your application to a debugger.

yooyo
11-23-2009, 07:38 PM
I assume you have installed driver for that NVidia card.
Such errors is common when app overwrite part of its memory and affect opengl state or if you have multiple threads and one thread use some buffer to upload texture to opengl while second thread delete that buffer.

Neonic
11-24-2009, 01:56 PM
I assume you have installed driver for that NVidia card.
Such errors is common when app overwrite part of its memory and affect opengl state or if you have multiple threads and one thread use some buffer to upload texture to opengl while second thread delete that buffer.

what exactly do you mean with the app overwriting memory and affecting the openGL state? If I would change bits in a memory block that wasn't allocated, then shouldn't the crash occur at the moment of changing instead of at the call to glGetError?

My application indeed uses a second thread, in which textures, shaders, etc. are loaded. But I've verified that this thread has ended long before the call to glGetError that gives this crash.

This crash occurs always in the same glGetError call somewhere in the rendering function. Strangely, the crash doesn't happen with the first, but with the second call to that rendering function.

Neonic
11-25-2009, 07:29 AM
I've found something new:

There's a call to 'glBindFramebufferEXT' with the GLuint variable 'fbo' as argument that was given the value '1' by openGL. If I comment out this 'glBindFramebufferEXT' call I won't get the crash.

It's not after the first call to 'glBindFramebufferEXT' after which the crash occurs, but after the third. I've checked that the inserted argument 'fbo' stays '1' all the time.

the fbo object is created like this:


glGenFramebuffersEXT(1, &fbo);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);

glGenTextures(1,&tex);

glBindTexture(GL_TEXTURE_2D, tex);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, tex, 0);

glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glBindTexture(GL_TEXTURE_2D, 0);