Hello Guest

[FIXED] LWJGL3 project runs in Windows but will only run as debug in Linux

  • 14 Replies
  • 14156 Views
Hello,

My soon-to-be released inverse kinematics library ("Caliko") uses LWJGL3 to provide some basic visualisation, and works just fine under Windows - but in Linux it will only run when I launch the app in debug mode. When launched as normal via Eclipse's "Run Application" I get the following error:

Quote
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f4ed6b03ce1, pid=12484, tid=139978352019200
#
# JRE version: OpenJDK Runtime Environment (8.0_66-b17) (build 1.8.0_66-b17)
# Java VM: OpenJDK 64-Bit Server VM (25.66-b17 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libGL.so.1+0xa7ce1]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/r3dux/Code/Java/eclipse-workspace/2015-12-10 - Caliko Library Mk60/hs_err_pid12484.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

The debug log itself can be found here: http://pastebin.com/nA0KNCTd

This is the case whether I use the stable (LWJGL 3.0.0b build 64) or nightly (as of 10/12/2015) builds. The libGL.so in question is from the latest 64-bit Nvidia driver, and I'm running Arch Linux (all details plus the name of my first pet and mother's maiden name in above log!).

Any thoughts would be very gratefully appreciated.

-r3dux
« Last Edit: February 04, 2016, 21:50:24 by r3dux »

*

Offline spasi

  • *****
  • 2261
    • WebHotelier
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #1 on: December 09, 2015, 14:16:20 »
Looks like the driver is crashing after a call to glfwInit(). What GLFW hints are you using?

but in Linux it will only run when I launch the app in debug mode.

Does that mean -Dorg.lwjgl.util.Debug=true or something specific to your application?

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #2 on: December 10, 2015, 05:15:34 »
The GLFW hints used are pretty standard and commenting them out doesn't help:

Code: [Select]
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
glfwWindowHint(GLFW_VISIBLE, GL_TRUE);
glfwWindowHint(GLFW_FOCUSED, GL_TRUE);
glfwWindowHint(GLFW_SAMPLES, 4);

By 'launch in debug mode' I just mean I click the "Run in Debug" button in Eclipse - I'm not doing anything different in the code or launching with "-Dorg.lwjgl.util.Debug=true" or such to the best of my knowledge. The 'debug mode' running process (which will run without crashing) is:

Code: [Select]
/usr/lib/jvm/java-8-openjdk/bin/java -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:44998 -Djava.library.path=/home/r3dux/Code/Java Libraries/LWJGL3-Nightly/native -Dfile.encoding=UTF-8 -classpath /home/r3dux/Code/Java/eclipse-workspace/2015-12-10 - Caliko Library Mk60/bin:/home/r3dux/Code/Java Libraries/LWJGL3-Nightly/jar/lwjgl.jar au.edu.federation.alansley.Application

*

Offline spasi

  • *****
  • 2261
    • WebHotelier
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #3 on: December 10, 2015, 11:13:15 »
That's very odd. Does it also happen with the simplest GLFW program possible?

Code: [Select]
public static void main(String[] args) {
glfwInit();
glfwTerminate();
}

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #4 on: December 10, 2015, 22:23:10 »
Just checked - and yes, it does.

*

Offline spasi

  • *****
  • 2261
    • WebHotelier
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #5 on: December 10, 2015, 22:50:25 »
Sounds like a driver bug indeed. Have you tried any other OpenGL application?

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #6 on: December 11, 2015, 09:00:15 »
ioquake3, sdlmame and anything in Steam works just fine (Half-Life 2, Super Hexagon etc).

I haven't tried to reverting to an older Nvidia driver - and can't find any other report of this issue, so I guess I'll just leave it for now.

Thanks for trying to help though.

*

Offline spasi

  • *****
  • 2261
    • WebHotelier
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #7 on: December 11, 2015, 11:30:43 »
Another test you could do if you have the time: Build GLFW locally and try one of its example applications. I'd be very interested to find out if this issue is related to Java/LWJGL or not.

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #8 on: December 12, 2015, 01:33:47 »
I've built the latest version of GLFW, and the example applications work without error.

*

Offline spasi

  • *****
  • 2261
    • WebHotelier
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #9 on: December 12, 2015, 13:21:28 »
What about running the Java app via the command line (not Eclipse)? Please use the simple version above (just Init/Terminate).

edit: Also, run it with -Dorg.lwjgl.util.Debug=true and paste the output here please.
« Last Edit: December 12, 2015, 13:31:16 by spasi »

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #10 on: December 13, 2015, 03:37:16 »
Command:
Code: [Select]
$ java -Djava.library.path=/home/r3dux/Code/Java\ Libraries/LWJGL3/native -Dfile.encoding=UTF-8 -classpath .:/home/r3dux/Code/Java/eclipse-workspace/GLFW3-Test/bin:/home/r3dux/Code/Java\ Libraries/LWJGL3/jar/lwjgl.jar -Dorg.lwjgl.util.Debug=true Main
Results:
Code: [Select]
[LWJGL] Version: 3.0.0b SNAPSHOT
[LWJGL] OS: Linux v4.2.5-1-ARCH
[LWJGL] JRE: 1.8.0_66 amd64
[LWJGL] JVM: OpenJDK 64-Bit Server VM v25.66-b17 by Oracle Corporation
[LWJGL] Loaded library from java.library.path: lwjgl
[LWJGL] MemoryUtil accessor: MemoryAccessorUnsafe
[LWJGL] Loaded native library: /home/r3dux/Code/Java Libraries/LWJGL3/native/libjemalloc.so
[LWJGL] MemoryUtil allocator: JEmallocAllocator
[LWJGL] Loaded native library: /home/r3dux/Code/Java Libraries/LWJGL3/native/libglfw.so
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fa95b347ce1, pid=5487, tid=140365982349056
#
# JRE version: OpenJDK Runtime Environment (8.0_66-b17) (build 1.8.0_66-b17)
# Java VM: OpenJDK 64-Bit Server VM (25.66-b17 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libGL.so.1+0xa7ce1]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/r3dux/Code/Java/eclipse-workspace/GLFW3-Test/src/hs_err_pid5487.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Aborted (core dumped)

*

Offline spasi

  • *****
  • 2261
    • WebHotelier
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #11 on: December 13, 2015, 13:01:02 »
A long shot, but try running with: -Dorg.lwjgl.system.allocator=system

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #12 on: December 14, 2015, 22:52:34 »
Unfortunately the outcome is the same.

Command:
Code: [Select]
java -Djava.library.path=/home/r3dux/Code/Java\ Libraries/LWJGL3/native -Dfile.encoding=UTF-8 -classpath .:/home/r3dux/Code/Java/eclipse-workspace/GLFW3-Test/bin:/home/r3dux/Code/Java\ Libraries/LWJGL3/jar/lwjgl.jar -Dorg.lwjgl.util.Debug=true -Dorg.lwjgl.system.allocator=system Main

Result:
Code: [Select]
[LWJGL] Version: 3.0.0b SNAPSHOT
[LWJGL] OS: Linux v4.2.5-1-ARCH
[LWJGL] JRE: 1.8.0_66 amd64
[LWJGL] JVM: OpenJDK 64-Bit Server VM v25.66-b17 by Oracle Corporation
[LWJGL] Loaded library from java.library.path: lwjgl
[LWJGL] MemoryUtil accessor: MemoryAccessorUnsafe
[LWJGL] MemoryUtil allocator: StdlibAllocator
[LWJGL] Loaded native library: /home/r3dux/Code/Java Libraries/LWJGL3/native/libglfw.so
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007ff5f36efce1, pid=29097, tid=140694948849408
#
# JRE version: OpenJDK Runtime Environment (8.0_66-b17) (build 1.8.0_66-b17)
# Java VM: OpenJDK 64-Bit Server VM (25.66-b17 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libGL.so.1+0xa7ce1]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/r3dux/Code/Java/eclipse-workspace/GLFW3-Test/src/hs_err_pid29097.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Aborted (core dumped)

Oh well, thanks for trying anyway. I wonder what is actually changing when the "Debug As..." button is clicked in Eclipse rather than the "Run As..."

*

Offline Cornix

  • *****
  • 488
Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #13 on: December 14, 2015, 22:57:10 »
Could be that the code is executed inside a sand box when debugging. It should also be significantly slower when debugging. Could be related to both, OpenGL drivers are a strange breed.

Re: LWJGL3 project runs in Windows but will only run as debug in Linux
« Reply #14 on: February 04, 2016, 21:47:21 »
This issue is fixed in Nvidia drivers 361.18-3.