Go Back   nV News Forums > Linux Support Forums > NVIDIA Linux

Newegg Daily Deals

Thread Tools
Old 08-30-10, 12:14 AM   #1
Registered User
Join Date: Dec 2007
Posts: 16
Default help: GLX driver function crashes with GLEW but not GLEE

I have a 3D graphics engine/server application I was developing until about 1 year ago. When I left off work on the application, I had equivalent linux and windows versions, but also I had another windows version with more features added.

Recently I started trying to develop them again and built a new 64-bit ubuntu 10.04 system with codeblocks 10.05 to continue work. The windows system is still the same winxp64 system. But I am only developing 32-bit applications in both cases (because I haven't written the 64-bit versions of my SIMD/SSE2+ assembly language routines).

The new version on windows was based upon GLEW because GLEE had fallen behind and I needed some new features not supported then by GLEE.

When I tried to make the most up-to-date application compile on linux, it gets a segment violation when calling the following function:

glxfbconfig = glXChooseFBConfig (xdisplay, xscreen, (int*)&glxfbconfigattributes000, &glxfbconfigelements);
When I look at the assembly language where the segment violation happens, the instruction is

call edx

but register edx contains 0x00000000

Several lines up, register edx is set as follows:

mov edx, DWORD PTR ds:0x820a0b8


I spent a long time trying to figure out what I might have changed in the code that might have caused this. Eventually I did what I should have done from the start --- tested the previously working version (the compatible version that ran correctly on both linux and windows).

Well, it still runs on both linux and windows.

Then I changed the project in only one way --- switch from GLEE to GLEW. I can do this because this version was just before I switched to GLEW to gain access to more advanced features.

The result is --- the same segment violation at the exact same place for the exact same reason (register edx == zero).

All I do to switch over is the following:

#1: Change one define in the IDE from "GLEE" to "GLEW".
#2: Remove file "glee.c" from the project.
#3: Add file "glew.c" to the project.

That's all. Step #1 causes the files in the application to:

#include <GL/glew.h>
#include <GL/glxew.h>  // or <GL/wglew.h> on windows
instead of:

Code:#include <GL/glee.h>

I consider this to pretty much definitely narrow down the problem to GLEW (or something about the way I include the GLEW files).

Note that I include the GLEW files in my application, not link to the libraries they provide as an alternative.


Does anyone know what the problem is? Has anyone seen a problem like this?

Is anyone up to debugging this? Note that the application runs on my windows system (with GLEE or GLEW). The only difference on windows is I develop/debug with VisualStudio2005 instead of Code::Blocks... but that shouldn't matter (sez me). If anyone has 64-bit ubuntu 10.04 and is willing to debug this problem, I'll ZIP up and send the code. I doubt the problem is the nvidia driver on my linux system (195.36.24) since GLEE versus GLEW shouldn't have anything to do with that.

Ideas, anyone?
bootstrap is offline   Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

All times are GMT -5. The time now is 01:50 PM.

Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2015, Jelsoft Enterprises Ltd.
Copyright 1998 - 2014, nV News.