PDA

View Full Version : glGenFramebuffersEX SIGSEGV



juszczec
03-06-2010, 06:13 PM
Hello all

When I execute:

glGenFramebuffersEXT(1, &fboId);

(where fboId is type GLuint) I get a seg fault (SIGSEGV).

My specs are as follows:

Toshiba Satellite P205D-S7802
Fedora Core 8
kernel 2.6.25.6-27.fc8
Opengl Version: 2.1.7659 Release
GLEW Version: 1.4.0

Curiously glxinfo and fglrxinfo both run, but segfault when they are done. Here's the fglrxinfo (because its shorter)

[markj@localhost src]$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Radeon X1200 Series
OpenGL version string: 2.1.7659 Release

Segmentation fault

Does anyone have any ideas what to do?

Mark

dorbie
03-06-2010, 09:30 PM
It's a straightforward function and you are calling it correctly. All it does is supply a unique handle. I think you need a valid context though.

I saw a similar problem recently (almost exactly the same) on a mobile device.

I found some heap corruption earlier in the code due to some shader string mismanagement.

dorbie
03-06-2010, 09:40 PM
P.S. specifically shader attribute binding strings, strstr provided a useful sanity check.

Even if it crashes, it's better to crash at the root of the problem and in your application code.

juszczec
03-07-2010, 09:30 AM
dorbie

Thanks for the replies. As I'm new to OpenGL programming, there are a few things I don't understand and wish to clarify.

"I think you need a valid context though."

Do you mean there are some calls needed to set up the environment for glGenFramebuffersEX? Can you post links of some examples of setting up/checking the context?

"P.S. specifically shader attribute binding strings,"

Are these the routines that help set up the context? Can you post their names?

"strstr provided a useful sanity check."

Thanks for the tip.

"Even if it crashes, it's better to crash at the root of the problem and in your application code."

I'm assuming I need to use the C++ function strstr to verify some value returned by the context set up. Am I right? I'm also assuming, if strstr fails then that points to the root of my problem. Am I right?

Thanks for all your help.

Mark

Y-tension
03-08-2010, 04:05 AM
You mean, when you comment the line out, everything works as "expected"?

juszczec
03-08-2010, 09:01 AM
You mean, when you comment the line out, everything works as "expected"?

No. If I comment out the calls to glGenFramebuffersEXT and glBindFramebufferEXT then it segfaults at glFramebufferTexture2DEXT

// create a framebuffer object
//glGenFramebuffersEXT(1, &fboId);
//glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);

// Instruct openGL that we won't bind a color texture with the currently binded FBO
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);

// attach the texture to FBO depth attachment point
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D, depthTextureId, 0);

Y-tension
03-09-2010, 05:43 AM
Have you initialized glew? sounds like a null pointer from an unitialized extension function pointer.