Bug 1417690 - segfault in i965_dri.so in libgdx application
Summary: segfault in i965_dri.so in libgdx application
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: mesa
Version: 25
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Adam Jackson
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-01-30 16:50 UTC by MB
Modified: 2017-01-31 17:38 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-01-31 17:38:36 UTC
Type: Bug


Attachments (Terms of Use)
jvm error dump when running java -jar SkatGame.jar (64.35 KB, text/plain)
2017-01-30 16:50 UTC, MB
no flags Details

Description MB 2017-01-30 16:50:00 UTC
Created attachment 1245928 [details]
jvm error dump when running java -jar SkatGame.jar

Description of problem:

After "yum update" a few days ago, a libgdx application is no longer working. It segfaults right away in i965_dri.so

Version-Release number of selected component (if applicable):

  segfault experienced with 

   mesa-*-13.0.3-4.fc25.x86_64

   and 

     openjdkjava-1.8.0-openjdk-1.8.0.121-1.b14.fc25.x86_64  

       or 

     Oracle's jdk1.8.0_121

   and libgdx versions 1.8.0 or 1.9.5

  The SkatGame application works on a similar FC25 system running a proprietary NVIDIA driver. It also worked on this machine for one year up until a software update last week (presumably involving mesa-*). My attempts to downgrade to an earlier mesa version failed.

How reproducible:

  every time

Steps to Reproduce:

  1. download https://skatgame.net/app/SkatGame.jar
  2. issue command  java -jar SkatGame.jar

Actual results:

  segmentation fault in i965_dri.so, jvm bug report attached

Expected results:

  Window opens with SkatGame logo


Additional info:

SkatGame Application Page:  https://skatgame.net/app/
SkatGame jar file:          https://skatgame.net/app/SkatGame.jar

lscpi output:

00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
00:1c.3 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 4 (rev c4)
00:1c.5 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 6 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)
00:1f.2 RAID bus controller: Intel Corporation 82801 Mobile SATA Controller [RAID mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 630M] (rev a1)
08:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)
0a:00.0 Network controller: Intel Corporation Centrino Wireless-N 2230 (rev c4)
0b:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)

==========

LWJGL Call Context where segfault happens (in native function nDestroy):

public void destroy(PeerInfo peer_info, ByteBuffer handle) throws LWJGLException {
		LinuxDisplay.lockAWT();
		try {
			ByteBuffer peer_handle = peer_info.lockAndGetHandle();
			try {
				nDestroy(peer_handle, handle);
			} finally {
				peer_info.unlock();
			}
		} finally {
			LinuxDisplay.unlockAWT();
		}
	}

	private static native void nDestroy(ByteBuffer peer_handle, ByteBuffer context_handle) throws LWJGLException;
}

==================

involved JNI code in lwjgl:

JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxContextImplementation_nDestroy
  (JNIEnv *env, jclass clazz, jobject peer_handle, jobject context_handle) {
        X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_handle);
        X11Context *context_info = (*env)->GetDirectBufferAddress(env, context_handle);
        lwjgl_glXDestroyContext(peer_info->display, context_info->context);
}

==================

glXDestroyContext appears to be hooked up to the external GL library here: 

static void extgl_InitGLX12(void) {
        ExtFunction functions[] = {
                {"glXChooseVisual", (void*)&lwjgl_glXChooseVisual},
                {"glXCopyContext", (void*)&lwjgl_glXCopyContext},
                {"glXCreateContext", (void*)&lwjgl_glXCreateContext},
                {"glXCreateGLXPixmap", (void*)&lwjgl_glXCreateGLXPixmap},
                {"glXDestroyContext", (void*)&lwjgl_glXDestroyContext},
                {"glXDestroyGLXPixmap", (void*)&lwjgl_glXDestroyGLXPixmap},
                {"glXGetConfig", (void*)&lwjgl_glXGetConfig},
                {"glXGetCurrentContext", (void*)&lwjgl_glXGetCurrentContext},
                {"glXGetCurrentDrawable", (void*)&lwjgl_glXGetCurrentDrawable},
                {"glXIsDirect", (void*)&lwjgl_glXIsDirect},
                {"glXMakeCurrent", (void*)&lwjgl_glXMakeCurrent},
                {"glXQueryExtension", (void*)&lwjgl_glXQueryExtension},
                {"glXQueryVersion", (void*)&lwjgl_glXQueryVersion},
                {"glXSwapBuffers", (void*)&lwjgl_glXSwapBuffers},
                {"glXUseXFont", (void*)&lwjgl_glXUseXFont},
                {"glXWaitGL", (void*)&lwjgl_glXWaitGL},
                {"glXWaitX", (void*)&lwjgl_glXWaitX},
                {"glXGetClientString", (void*)&lwjgl_glXGetClientString},
                {"glXQueryServerString", (void*)&lwjgl_glXQueryServerString},
                {"glXQueryExtensionsString", (void*)&lwjgl_glXQueryExtensionsString}};
        symbols_flags.GLX12 = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
}

Comment 1 MB 2017-01-31 17:38:36 UTC
Today I experimented a bit more. I had repo fedora-updates-testing enabled. Disabling it and running dnf distro-sync resolved the issue. I am using mesa version 13.0.3-5 right now. So, perhaps the crash is caused by changes in the current updates-testing packages. In any case, skatgame.jar is working again, and  this ticket can be closed.


Note You need to log in before you can comment on or make changes to this bug.