java.lang.IllegalStateExceptionInvalid X server connection / Ubuntu 13.10 /64bit

Started by IstiCusi, November 19, 2014, 19:53:04

Previous topic - Next topic

IstiCusi

Dear mates,

I am a noob( ???) concerning LWJGL 3.0.0a. Therefore I would be very happy to get some advice/help from an
expert in this forum. I get the following  exception thrown by the Oracle JVM when running the main example
found at

http://www.lwjgl.org/guide

with -Dorg.lwjgl.util.Debug=true
on my Ubuntu machine (I did the experiment in Win7 as well -- there I have no problem). Legacy
LWJGL seems to work (2.9.x).


-------------------------------------------8<----------------------------------------------------

Hello LWJGL 3.0.0a!
Exception in thread "main" java.lang.IllegalStateException: Invalid X server connection specified.
[LWJGL] MemoryUtil MemoryAccessor: MemoryAccessorUnsafe
   at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:68)
   at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:63)
   at org.lwjgl.opengl.GLContext.createFromCurrent(GLContext.java:31)
   at Main.loop(Main.java:66)
   at Main.execute(Main.java:20)
   at Main.main(Main.java:78)

-------------------------------------------8<----------------------------------------------------

An address 140699310458656 is determined (sorry, that I give it as int) and than

the exception is thrown in org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(long display)
that checks the display:long = 0 against NULL:
in

-------------------------------------------8<----------------------------------------------------
public static LinuxGLContext createFromCurrent(long display) {
      if ( display == NULL )
         throw new IllegalStateException("Invalid X server connection specified.");

-------------------------------------------8<----------------------------------------------------

What would be expected in display in that case and why do I get back 0 (aka NULL) ?


Thanks a lot (really!) and cheers,
Stephan


I have the following specs:


__Ubuntu 13.10___________________________________________________________________________________
uname -a
Linux phonon-lnx-twr 3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

__Java 7_________________________________________________________________________________________
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)


__Geforce GTX 580________________________________________________________________________________
lspci -vnn | grep VGA -A 12
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF110 [GeForce GTX 580] [10de:1080] (rev a1) (prog-if 00 [VGA controller])
   Subsystem: Micro-Star International Co., Ltd. Device [1462:2562]
   Flags: bus master, fast devsel, latency 0, IRQ 16
   Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
   Memory at f0000000 (64-bit, prefetchable) [size=128M]
   Memory at f8000000 (64-bit, prefetchable) [size=32M]
   I/O ports at e000 [size=128]
   [virtual] Expansion ROM at fb000000 [disabled] [size=512K]
   Capabilities: <access denied>
   Kernel driver in use: nvidia


__Unity Settings_________________________________________________________________________________
/usr/lib/nux/unity_support_test -p
Not software rendered:    yes
Not blacklisted:          yes
GLX fbconfig:             yes
GLX texture from pixmap:  yes
GL npot or rect textures: yes
GL vertex program:        yes
GL fragment program:      yes
GL vertex buffer object:  yes
GL framebuffer object:    yes
GL version is 1.4+:       yes
Unity 3D supported:       yes


__GLX information_________________________________________________________________________________
GLX Information for XXXX
  direct rendering: Yes
  GLX extensions:
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap, GLX_EXT_buffer_age,
    GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_EXT_create_context_es_profile, GLX_EXT_create_context_es2_profile, GLX_ARB_create_context_robustness, GLX_ARB_multisample, GLX_NV_float_buffer, GLX_ARB_fbconfig_float,
    GLX_EXT_framebuffer_sRGB, GLX_NV_multisample_coverage, GLX_ARB_get_proc_address

  server glx vendor string: NVIDIA Corporation
  server glx version string: 1.4
  server glx extensions:
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap, GLX_EXT_buffer_age,
    GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_EXT_create_context_es_profile, GLX_EXT_create_context_es2_profile, GLX_ARB_create_context_robustness, GLX_ARB_multisample, GLX_NV_float_buffer, GLX_ARB_fbconfig_float,
    GLX_EXT_framebuffer_sRGB, GLX_NV_multisample_coverage

  client glx vendor string: NVIDIA Corporation
  client glx version string: 1.4
  client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync, GLX_NV_swap_group, GLX_NV_video_out, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_EXT_swap_control_tear, GLX_EXT_buffer_age, GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_NV_float_buffer, GLX_ARB_fbconfig_float, GLX_EXT_fbconfig_packed_float,
    GLX_EXT_texture_from_pixmap, GLX_EXT_framebuffer_sRGB, GLX_NV_present_video, GLX_NV_copy_image, GLX_NV_multisample_coverage, GLX_NV_video_capture, GLX_EXT_create_context_es_profile, GLX_EXT_create_context_es2_profile,
    GLX_ARB_create_context_robustness

  OpenGL vendor string: NVIDIA Corporation
  OpenGL renderer string: GeForce GTX 580/PCIe/SSE2
  OpenGL version string: 4.3.0 NVIDIA 319.32
  OpenGL extensions:
    GL_AMD_multi_draw_indirect, GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_blend_func_extended, GL_ARB_clear_buffer_object, GL_ARB_color_buffer_float, GL_ARB_compatibility, GL_ARB_compressed_texture_pixel_storage,
    GL_ARB_conservative_depth, GL_ARB_compute_shader, GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
    GL_ARB_draw_indirect, GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport, GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments, GL_ARB_framebuffer_object,
    GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4, GL_ARB_get_program_binary, GL_ARB_gpu_shader5, GL_ARB_gpu_shader_fp64, GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_instanced_arrays,
    GL_ARB_internalformat_query, GL_ARB_internalformat_query2, GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_draw_indirect, GL_ARB_multisample, GL_ARB_multitexture,
    GL_ARB_occlusion_query, GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_program_interface_query, GL_ARB_provoking_vertex, GL_ARB_robust_buffer_access_behavior,
    GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map, GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counters, GL_ARB_shader_bit_encoding, GL_ARB_shader_image_load_store,
    GL_ARB_shader_image_size, GL_ARB_shader_objects, GL_ARB_shader_precision, GL_ARB_shader_storage_buffer_object, GL_ARB_shader_subroutine, GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
    GL_ARB_shading_language_include, GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader, GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object,
    GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range, GL_ARB_texture_compression, GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map, GL_ARB_texture_cube_map_array,
    GL_ARB_texture_env_add, GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather, GL_ARB_texture_mirrored_repeat, GL_ARB_texture_multisample,
    GL_ARB_texture_non_power_of_two, GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
    GL_ARB_texture_swizzle, GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix, GL_ARB_uniform_buffer_object,
    GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit, GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_vertex_type_2_10_10_10_rev,
    GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers, GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_S3_s3tc, GL_EXT_texture_env_add, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, GL_EXT_Cg_shader, GL_EXT_depth_bounds_test, GL_EXT_direct_state_access, GL_EXT_draw_buffers2,
    GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, GL_EXTX_framebuffer_mixed_formats, GL_EXT_framebuffer_multisample_blit_scaled,
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4, GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4, GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels,
    GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color, GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color, GL_EXT_shader_image_load_store,
    GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_array, GL_EXT_texture_buffer_object, GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc,
    GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp, GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
    GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, GL_EXT_texture_object, GL_EXT_texture_shared_exponent, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, GL_EXT_texture_storage,
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback2, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_EXT_vertex_attrib_64bit, GL_EXT_x11_sync_object, GL_EXT_import_sync_object, GL_IBM_rasterpos_clip,
    GL_IBM_texture_mirrored_repeat, GL_KHR_debug, GL_KTX_buffer_region, GL_NV_blend_square, GL_NV_compute_program5, GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, GL_NV_depth_buffer_float, GL_NV_depth_clamp,
    GL_NV_draw_texture, GL_NV_ES1_1_compatibility, GL_NV_explicit_multisample, GL_NV_fence, GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program, GL_NV_fragment_program_option, GL_NV_fragment_program2,
    GL_NV_framebuffer_multisample_coverage, GL_NV_geometry_shader4, GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_gpu_program5, GL_NV_gpu_program5_mem_extended, GL_NV_gpu_program_fp64, GL_NV_gpu_shader5, GL_NV_half_float,
    GL_NV_light_max_exponent, GL_NV_multisample_coverage, GL_NV_multisample_filter_hint, GL_NV_occlusion_query, GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object, GL_NV_parameter_buffer_object2, GL_NV_path_rendering,
    GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart, GL_NV_register_combiners, GL_NV_register_combiners2, GL_NV_shader_atomic_counters, GL_NV_shader_atomic_float, GL_NV_shader_buffer_load,
    GL_NV_shader_storage_buffer_object, GL_NV_texgen_reflection, GL_NV_texture_barrier, GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4, GL_NV_texture_expand_normal, GL_NV_texture_multisample, GL_NV_texture_rectangle,
    GL_NV_texture_shader, GL_NV_texture_shader2, GL_NV_texture_shader3, GL_NV_transform_feedback, GL_NV_transform_feedback2, GL_NV_vdpau_interop, GL_NV_vertex_array_range, GL_NV_vertex_array_range2,
    GL_NV_vertex_attrib_integer_64bit, GL_NV_vertex_buffer_unified_memory, GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2, GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_NVX_conditional_render,
    GL_NVX_gpu_memory_info, GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow, GL_SUN_slice_accum






spasi

Hey IstiCusi,

This exception is thrown when glXGetCurrentDisplay returns NULL, which can only happen if there is no OpenGL context current in the current thread.

Quote from: IstiCusi on November 19, 2014, 19:53:04An address 140699310458656 is determined (sorry, that I give it as int)

I don't know where that number could be coming from. Could you please post the full output of running the example code?

IstiCusi

Dear spasi, efcharisto, mate for your reply. I added the output:

Hello LWJGL 3.0.0a!
Exception in thread "main" java.lang.IllegalStateException: Invalid X server connection specified.
[LWJGL] MemoryUtil MemoryAccessor: MemoryAccessorUnsafe
   at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:68)
   at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:63)
   at org.lwjgl.opengl.GLContext.createFromCurrent(GLContext.java:31)
   at Main.loop(Main.java:66)
   at Main.execute(Main.java:20)
   at Main.main(Main.java:78)

Is there some other log file I can check and provide you?

Thanks a lot and have a nice day,
Stephan

spasi

Hey Stephan,

Could you add this:

System.out.println("GLX CURR: " + GLX.glXGetCurrentContext());
System.out.println("GLFW CTX: " + GLFWLinux.glfwGetGLXContext(window));
System.out.println("GLFW DSP: " + GLFWLinux.glfwGetX11Display());


after line #59 of the example code (right after the glfwMakeContextCurrent call) and post the output again? Thanks.

IstiCusi

Here it is ...

LWJGL] Version 3.0.0a
Hello LWJGL 3.0.0a!
[LWJGL] MemoryUtil MemoryAccessor: MemoryAccessorUnsafe
GLX CURR: 140147468933544
GLFW CTX: 140147468933544
GLFW DSP: 140147468530784
Exception in thread "main" java.lang.IllegalStateException: Invalid X server connection specified.
   at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:68)
   at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:63)
   at org.lwjgl.opengl.GLContext.createFromCurrent(GLContext.java:31)
   at Main.loop(Main.java:86)
   at Main.execute(Main.java:35)
   at Main.main(Main.java:99)

cheers, Stephan

spasi

I have been trying to reproduce this problem both on a local machine (Ubuntu 14.04, NV 660 GTX, driver 331.38) and on an Amazon GPU instance (NV GRID). I'm not able to give an exact solution or explanation, but everything points to a wrong libGL.so being loaded. It seems that somehow GLFW uses the Mesa libGL and LWJGL opens the Nvidia one (or vice-versa) and the two are not compatible. Specifically, Mesa cannot interface properly with the Nvidia binary driver.

I'm sorry that I can't offer a better explanation, but I haven't been able to reproduce the problem exactly. My advice would be: have a look at the installed libraries, possibly remove anything related to Mesa and reinstall the Nvidia driver.

IstiCusi

Dear Spasi,
thanks a lot, dear mate -- this is already quite a hint. I will check everything to be sure, which libs are used. Probably I will report back in some
weeks because of other work I have to do. Maybe I upgrade my system to 14.04 and check, if the problem is resolved with the
nv drivers you mentioned. By the way I would rely on the open source drivers but I need also to run blender that somehow does not like the
open source nv drivers.
Cheers and have a nice week,
Stephan

abcdef

Hi, I have finished migrating things and I too find a very similar issue.I have an nvidia laptop using the latest of linux mint (17 with cinnamon) with the latest nvidia drivers (I have tried with 340 and 331 too, same issue)

When in nvidia mode I get the error mentioned above, my debug output is below. I ran the events.java in the github tests area to make sure it was not my code causing the issue. Also when I run the GLFW examples directly (downloaded the source from GLFW website), they run fine (gears, heightmap, boing etc)

Output from events.java
GLFW initialized
Window opened.

GLX CURR: 140637565914624
GLFW CTX: 140637565914624
GLFW DSP: 140637565013424
Exception in thread "main" java.lang.IllegalStateException: Invalid X server connection specified.
	at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:68)	at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:68)
	at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:68)
	at org.lwjgl.system.linux.opengl.LinuxGLContext.createFromCurrent(LinuxGLContext.java:63)
	at org.lwjgl.opengl.GLContext.createFromCurrent(GLContext.java:31)
	Events.demo(Event.java:235)
	Events.main(Event.java:76)


The line it bombed out on was

GLContext.createFromCurrent();


Edit  : Forgot to mention that running with the intel drivers works fine

spasi

This issue has been fixed in build #36 (also promoted to stable). See this discussion for details.

IstiCusi

Dear Spasi, thanks a lot for your comment here. Happy new year and greetings from Zuerich.
I checked now and everything works fine on my system. Very cool! Thanks a lot.
Stephan

okidor

I have the same issue with the latest stable build ( i even tried with the last nightly build #37).
Hopefully, i don't need libgl1-mesa-dev, thus i uninstalled it and it work fine now.
But i wanted to report that this is still an issue with ubuntu 14.04 64bits and nvidia GTX 660

abcdef

Spasi

Incase you didn't already know, when you use the prime switch app it changes

/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf

(I believe the 32 bit equiv is i386-linux-gnu_GL_conf)

I don't know if this is the same for all distro's, the values populated in each mode are :

For intel mode this is populated with

/usr/lib/x86_64-linux-gnu/mesa
/usr/lib/i386-linux-gnu/mesa

For nvidia mode it is populated with

/usr/lib/nvidia-331
/usr/lib32/nvidia-331

This might be a more reliable way to determining which drivers to load

spasi

Quote from: okidor on February 07, 2015, 13:34:53I have the same issue with the latest stable build ( i even tried with the last nightly build #37).
Hopefully, i don't need libgl1-mesa-dev, thus i uninstalled it and it work fine now.
But i wanted to report that this is still an issue with ubuntu 14.04 64bits and nvidia GTX 660

The original error occurred because LWJGL and GLFW dlopened different OpenGL libraries. This should not be happening anymore, unless org.lwjgl.librarypath or java.library.path have been set so that they include an OpenGL library. Otherwise, the system paths are used when dlopen is called and LWJGL should load whatever GLFW loads. Are you sure you're getting the exact same error?

Quote from: abcdef on February 07, 2015, 23:06:18
when you use the prime switch app it changes

/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf

(I believe the 32 bit equiv is i386-linux-gnu_GL_conf)

I don't know if this is the same for all distro's, the values populated in each mode are :

For intel mode this is populated with

/usr/lib/x86_64-linux-gnu/mesa
/usr/lib/i386-linux-gnu/mesa

For nvidia mode it is populated with

/usr/lib/nvidia-331
/usr/lib32/nvidia-331

This might be a more reliable way to determining which drivers to load

I don't know what the prime switch app is. In any case, neither LWJGL or GLFW do anything special with the system paths and I'm pretty sure they shouldn't.

okidor

indeed, i changed org.lwjgl.librarypath using System.setProperty.
In fact , i did this:

System.setProperty("org.lwjgl.librarypath",System.getProperty("user.dir") + File.separator + "lwjgl" + File.separator + "native" + File.separator + "linux" + File.separator + "x64");

what should i do to make GLFW load this too ?