Sign in to follow this  
AaronMK

OpenGL Illegal Instruction, possible causes?

Recommended Posts

AaronMK    114

I am getting an Illegal Instruction exception for OpenGL, and I'm wondering what are common causes of this are and how I should go about tracking them down.

 

  • It only happens on my desktop, but code works fine when I develop on my laptop.  Games and other graphics accelerated applications work fine on the box.
  • I am 99.9% sure a context is current.  I use GLEW in multi-threaded mode, and the context wrapper class sets a thread local GLEWContext to NULL when not current, so OpenGL API functions would not de-reference otherwise.
  • This happens on a call to glClearColor().  This is the first API call I make, but if I put it after my glEnable()/glDisable() initialization, it still fails on glClearColor()
  • I am using a version 4.2 context in compatibility mode.

 

Thank you for any assistance.

Share this post


Link to post
Share on other sites
pixelartist    622

Illegal instructions are operating system generated exceptions that (outside of errors caused by bad programming - ie referencing a function pointer to some garbage space in memory) are generally machine-specific. I'm not familiar with OpenGL, but perhaps you have it or your compiler configured for a different machine setup. Are you compiling on your laptop and trying to run on your desktop? Since it happens on your first API call I can only imagine OpenGL is configured to your laptop machine, and it's likely that the compiler is generating a system call that isn't available or isn't the same on your desktop The glEnable()/glDisable() functions probably don't generate the same system call, so they won't cause the exception (assuming this is the real reason). Try re-configuring and recompiling on your desktop.

Share this post


Link to post
Share on other sites
AaronMK    114

Hello PixelArtist,

 

For each machine, I am compiling in VS2012 with the same properties files, except for paths to supporting libraries.  I am  also compiling on the machine that is running the program.  Difference would be that my laptop has a Geforce 700 level card. My desktop has a 400 level card hooked up to the monitors, and a 200 level card so games can offload Physx, Cuda, etc.  Both sould support OpenGL 4.2, which my program targets.  I can do a simple program that just sets the clear color and clears the screen each frame with the same API calls that crash my bigger program with the same supporting boilerplate libraries without it complaining.

 

What kind of configuration would be the most likely candidate?

 

Thanks for any continued assistance.

Share this post


Link to post
Share on other sites
LorenzoGatti    4443

A function pointer into garbage memory, as pixelartist suggests, seems the most likely cause: from your description, you seem to be compiling the program properly.

Can you detail the difference between a test program that runs and a test program that crashes? Do you link to different libraries? Do the two development environments on your two computers produce different programs? (They shouldn't.)

Share this post


Link to post
Share on other sites
AaronMK    114

I think I found the issue.  My compilation settings for Enhanced Instruction Set was "AVX".  I changed this and I don't get any illegal instructions on the desktop anymore.  I suspect my laptop supports it, while my desktop does not.

Share this post


Link to post
Share on other sites
SimonForsman    7642

I think I found the issue.  My compilation settings for Enhanced Instruction Set was "AVX".  I changed this and I don't get any illegal instructions on the desktop anymore.  I suspect my laptop supports it, while my desktop does not.

 

IIRC the oldest CPUs that support AVX is intels Sandy Bridge and AMDs Bulldozer (both from 2011), so yeah, it is quite likely that your desktop lacks AVX support.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Similar Content

    • By povilaslt2
      Hello. I'm Programmer who is in search of 2D game project who preferably uses OpenGL and C++. You can see my projects in GitHub. Project genre doesn't matter (except MMO's :D).
    • By ZeldaFan555
      Hello, My name is Matt. I am a programmer. I mostly use Java, but can use C++ and various other languages. I'm looking for someone to partner up with for random projects, preferably using OpenGL, though I'd be open to just about anything. If you're interested you can contact me on Skype or on here, thank you!
      Skype: Mangodoor408
    • By tyhender
      Hello, my name is Mark. I'm hobby programmer. 
      So recently,I thought that it's good idea to find people to create a full 3D engine. I'm looking for people experienced in scripting 3D shaders and implementing physics into engine(game)(we are going to use the React physics engine). 
      And,ye,no money =D I'm just looking for hobbyists that will be proud of their work. If engine(or game) will have financial succes,well,then maybe =D
      Sorry for late replies.
      I mostly give more information when people PM me,but this post is REALLY short,even for me =D
      So here's few more points:
      Engine will use openGL and SDL for graphics. It will use React3D physics library for physics simulation. Engine(most probably,atleast for the first part) won't have graphical fron-end,it will be a framework . I think final engine should be enough to set up an FPS in a couple of minutes. A bit about my self:
      I've been programming for 7 years total. I learned very slowly it as "secondary interesting thing" for like 3 years, but then began to script more seriously.  My primary language is C++,which we are going to use for the engine. Yes,I did 3D graphics with physics simulation before. No, my portfolio isn't very impressive. I'm working on that No,I wasn't employed officially. If anybody need to know more PM me. 
       
    • By Zaphyk
      I am developing my engine using the OpenGL 3.3 compatibility profile. It runs as expected on my NVIDIA card and on my Intel Card however when I tried it on an AMD setup it ran 3 times worse than on the other setups. Could this be a AMD driver thing or is this probably a problem with my OGL code? Could a different code standard create such bad performance?
    • By Kjell Andersson
      I'm trying to get some legacy OpenGL code to run with a shader pipeline,
      The legacy code uses glVertexPointer(), glColorPointer(), glNormalPointer() and glTexCoordPointer() to supply the vertex information.
      I know that it should be using setVertexAttribPointer() etc to clearly define the layout but that is not an option right now since the legacy code can't be modified to that extent.
      I've got a version 330 vertex shader to somewhat work:
      #version 330 uniform mat4 osg_ModelViewProjectionMatrix; uniform mat4 osg_ModelViewMatrix; layout(location = 0) in vec4 Vertex; layout(location = 2) in vec4 Normal; // Velocity layout(location = 3) in vec3 TexCoord; // TODO: is this the right layout location? out VertexData { vec4 color; vec3 velocity; float size; } VertexOut; void main(void) { vec4 p0 = Vertex; vec4 p1 = Vertex + vec4(Normal.x, Normal.y, Normal.z, 0.0f); vec3 velocity = (osg_ModelViewProjectionMatrix * p1 - osg_ModelViewProjectionMatrix * p0).xyz; VertexOut.velocity = velocity; VertexOut.size = TexCoord.y; gl_Position = osg_ModelViewMatrix * Vertex; } What works is the Vertex and Normal information that the legacy C++ OpenGL code seem to provide in layout location 0 and 2. This is fine.
      What I'm not getting to work is the TexCoord information that is supplied by a glTexCoordPointer() call in C++.
      Question:
      What layout location is the old standard pipeline using for glTexCoordPointer()? Or is this undefined?
       
      Side note: I'm trying to get an OpenSceneGraph 3.4.0 particle system to use custom vertex, geometry and fragment shaders for rendering the particles.
  • Popular Now