Intel® Graphics Performance Analyzers (Intel® GPA)
Improve your game's performance by quickly specifying problem areas

SIGFPE in libGLHUD.so

Bram_S_
New Contributor I
1,472 Views

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
8 Replies
Giselle_G_Intel
Employee
1,472 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.

0 Kudos
Bram_S_
New Contributor I
1,472 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

 

0 Kudos
Bram_S_
New Contributor I
1,472 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.

0 Kudos
Giselle_G_Intel
Employee
1,472 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?

0 Kudos
Bram_S_
New Contributor I
1,472 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.

0 Kudos
Giselle_G_Intel
Employee
1,472 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.

Bram_Stolk
Novice
1,222 Views

Hi Giselle,

 

This bug is back. I see that an app running via gpa-monitor crashes when FP exceptions are enabled.

 

0 Kudos
Pamela_H_Intel
Moderator
1,116 Views

Bram,

Darn. I'm sorry to hear that.

(Giselle is no longer here. We all miss her.)

I guess you've tried the same ways to open your application . . .

I will escalate to the devs.

Meanwhile, there are some possible work arounds:

#1

  • Go to the settings cogwheel on the top right of Graphics Monitor
  • toggle on the Auto detect Launched Applications option (the first/top toggle button)
  • start you app outside of Graphics Monitor
  • Graphics monitor should automatically connect to it
  • AutoDetLaunched.PNG

#2

If the divide by zero is in the HUD, then, depending on where it is, disabling the HUD metrics may do the trick.

  • click on the options button on the bottom left of Graphics Monitor
  • in the bottom section "Active HUD metrics" drag each metric up, out of that section

Let me know if either of those help.

Pamela

0 Kudos
Reply