Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Bram_S_
Beginner
123 Views

SIGFPE in libGLHUD.so

Hi Giselle, nice meeting you at siggraph on tuesday.

I tried GPA (linux) on my app, but it crashed with a floating point error.

I suspect your tool does a division by zero somewhere?

As a rule, I run my games with FP exceptions enabled, so that I can catch all cases of NaN.

It should be easy to reproduce on your end, just add this to a linux app:

#include <fenv.h>
feenableexcept( FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW );

The crash:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/home/bram/apps/Armor/armor'.
Program terminated with signal SIGFPE, Arithmetic exception.
#0  0x00007f9044575484 in ?? () from /opt/intel/gpa/SystemAnalyzer/lib/libGLHUD.so
[Current thread is 1 (Thread 0x7f90505f7800 (LWP 15024))]
>>> where
#0  0x00007f9044575484 in ?? () from /opt/intel/gpa/SystemAnalyzer/lib/libGLHUD.so
#1  0x00007f9044579ab4 in ?? () from /opt/intel/gpa/SystemAnalyzer/lib/libGLHUD.so
#2  0x00007f90445508c5 in ?? () from /opt/intel/gpa/SystemAnalyzer/lib/libGLHUD.so
#3  0x00007f9044548faf in ?? () from /opt/intel/gpa/SystemAnalyzer/lib/libGLHUD.so
#4  0x00007f904fe8f515 in ?? () from /opt/intel/gpa/SystemAnalyzer/lib/libGPA.so
#5  0x00007f904feb56aa in glXSwapBuffers () from /opt/intel/gpa/SystemAnalyzer/lib/libGPA.so
#6  0x00007f904f72ed73 in X11_GL_SwapWindow (_this=<optimized out>, window=<optimized out>) at ./src/video/x11/SDL_x11opengl.c:925
#7  0x0000000000405fad in draw_screen () at XWin/main.cpp:45
#8  0x0000000000405ad5 in iterate () at XWin/main.cpp:257
#9  0x0000000000406761 in main (argc=1, argv=0x7ffda78ab968) at XWin/main.cpp:421

 

0 Kudos
6 Replies
Giselle_G_Intel
Employee
123 Views

Hi Bram,

It was good to meet you as well! Could you send me some additional information about your machine. I'll need you to select the 'i' button from within the tool to pull up the "about information" for your machine. This will allow me to see the hardware config. you have.

Bram_S_
Beginner
123 Views

Thanks,

So... I ran /opt/intel/gpa/SystemAnalyzer/bin/run_app on my binary, and it crashed on launch: I got no chance to interact with a tool or press 'i'.

I did manage to get 'about' info from /opt/intel/gpa/FrameAnalyzer/GpaMonitor.sh though, see below.

That said, I expect 'run_app' to crash on any machine, with any hardware for any app that enables FP exceptions. The HUD does a sqrt(0) or div by zero somewhere, I'm certain. (Or possibly acos(1.0001) or something.)

 

  Bram

PS: It also crashes when I load my binary in the GpaMonitor.sh app and launch it from there.

 

Operating System:
    Name: Ubuntu 18.04.1 LTS
    Locale: en_CA

CPU Information:
    Architecture: x64
    Cores count: 4

GPU Information:
    Name: NVIDIA GeForce GTX 750 Ti
    Vendor id: 0x10DE
    Product id: 0x1380

Machine:
    Name: Desktop64
    Memory: 24043 MB
    Screen: 2560x1600, 24 bit

Graphics Performance Analyzers:
    Version: 18.2.324856

 

Bram_S_
Beginner
123 Views

Also note:

Crash goes away if I don't enable FP exceptions.
I did notice that GPA does seem to interfere my OpenAL framework. When I launch my app via GPA, I get these errors:

AL lib: (WW) pulse_load: Failed to load libpulse.so.0
AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"
AL lib: (WW) alsa_load: Failed to load libasound.so.2
AL lib: (WW) alc_initconfig: Failed to initialize backend "alsa"
AL lib: (EE) ALCplaybackOSS_open: Could not open /dev/dsp: No such file or directory
AL lib: (WW) alcSetError: Error generated on device (nil), code 0xa004

I think because GPA changes library paths?

Lastly, when my app, launched from GPA, is running, it does show a HUD. But I think the drawing of this HUD has some issues as well. I run OpenGL Core Profile, and get this OpenGL error from your HUD, every frame:

GL_INVALID_OPERATION error generated

which does not happen if I run the app without the tool. In my experience, sometimes this is caused by the use of glLineWidth() with a value that is not 1.0 as the Core Profile does not support this.

Giselle_G_Intel
Employee
123 Views

Bram,

I will share this with the engineering team to get some insight. Thank you for the information! I hope we'll be able to find another solution for you soon! I also ave one last question, which OpenGL version are you using?

Bram_S_
Beginner
123 Views

I use OpenGL 3.2 Core Profile.

I expect this to trigger the GL_INVALID_OPERATION by the Hud Drawing.

For the NaN exception, I expect this not to matter. Most people run their code with FP exceptions disabled, so are not aware of div by zero and such.

Giselle_G_Intel
Employee
123 Views

Good news! We've added a fix for this issue that you should see in the next release. Please let me know if you ave any additional issues.

Reply