Bug 1386

Summary: Mesa 18.3.6 hardware renderer (Intel/AMD) freezes after native parenting
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: openglAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: critical    
Priority: P4    
Version: 2.4.0   
Hardware: All   
OS: all   
Type: ANNOTATION SCM Refs:
jogamp-scripting 6f2281165da079fe718ed340cb4c6102a45d0ddb
Workaround: TRUE

Description Sven Gothel 2019-08-23 07:51:21 CEST
Testing on Debian 10 Buster with Mesa 18.3.6 and 
GL_RENDERER
1) AMD ARUBA (DRM 2.50.0 / 4.19.0-5-amd64, LLVM 7.0.1)
2) Mesa DRI Intel(R) Iris 6100 (Broadwell GT3)

Reveals freezes after native reparenting via NEWT,
which were non-existent on Debian 9 Mesa 13.0.6.

It probably is not a DEFECT of JOGL, but a regression with Mesa,
however, first we have to support and document this issue in more detail.

Freezes occurred in different places according to GL_RENDERER:
1) AMD ARUBA (DRM 2.50.0 / 4.19.0-5-amd64, LLVM 7.0.1)
"main" #1 prio=5 os_prio=0 cpu=2114.62ms elapsed=24.73s tid=0x00007fd6d8012800 nid=0x54c0 runnable  [0x00007fd6df5e4000]
   java.lang.Thread.State: RUNNABLE
        at jogamp.opengl.x11.glx.GLX.dispatch_glXMakeContextCurrent0(Native Method)
        at jogamp.opengl.x11.glx.GLX.glXMakeContextCurrent(GLX.java:767)
        at jogamp.opengl.x11.glx.X11GLXContext.glXMakeContextCurrent(X11GLXContext.java:164)
        at jogamp.opengl.x11.glx.X11GLXContext.makeCurrentImpl(X11GLXContext.java:474)
        at jogamp.opengl.GLContextImpl.makeCurrentWithinLock(GLContextImpl.java:842)
        at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:650)
        at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:588)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1279)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
        at com.jogamp.opengl.test.junit.newt.parenting.TestParenting01dAWT.testGLWindowInvisibleReparentRecreateImpl(TestParenting01dAWT.java:165)
        at com.jogamp.opengl.test.junit.newt.parenting.TestParenting01dAWT.test01GLWindowReparentRecreateNoPreserve(TestParenting01dAWT.java:94)

2) Mesa DRI Intel(R) Iris 6100 (Broadwell GT3)
 "main-Display-.x11_:0.0-1-EDT-2" #24 daemon prio=5 os_prio=0 cpu=12.40ms elapsed=19.73s tid=0x00007f0c9c1bb000 nid=0x113f runnable  [0x00007f0cacc8b000]
   java.lang.Thread.State: RUNNABLE
        at jogamp.opengl.gl4.GL4bcImpl.dispatch_glClear1(Native Method)
        at jogamp.opengl.gl4.GL4bcImpl.glClear(GL4bcImpl.java:63)
        at jogamp.opengl.GLDrawableHelper.setViewportAndClear(GLDrawableHelper.java:738)
        at jogamp.opengl.GLDrawableHelper.reshape(GLDrawableHelper.java:742)
        at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:440)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
        at jogamp.opengl.GLAutoDrawableBase.defaultWindowResizedOp(GLAutoDrawableBase.java:260)
        at com.jogamp.newt.opengl.GLWindow.access$200(GLWindow.java:119)
        at com.jogamp.newt.opengl.GLWindow$2.windowResized(GLWindow.java:141)
        at jogamp.newt.WindowImpl.consumeWindowEvent(WindowImpl.java:4381)
        at jogamp.newt.WindowImpl.sendWindowEvent(WindowImpl.java:4315)
        at jogamp.newt.WindowImpl.setVisibleActionImpl(WindowImpl.java:1306)
        at jogamp.newt.WindowImpl$2.run(WindowImpl.java:1907)
        at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:143)
        - locked <0x000000071cb142d0> (a java.lang.Object)
        at jogamp.newt.DefaultEDTUtil$NEDT.run(DefaultEDTUtil.java:375)
Comment 1 Sven Gothel 2019-08-23 07:55:02 CEST
Used test case where freezing occurred is:  'com.jogamp.opengl.test.junit.newt.parenting.TestParenting01dAWT'
Comment 2 Sven Gothel 2019-08-23 08:02:57 CEST
Further testing w/ different Mesa 18.3.6 renderer

- Software Rendering LIBGL_ALWAYS_SOFTWARE=true
-- GL_RENDERER    llvmpipe (LLVM 7.0, 128 bits)
-- Result: OK (No freeze)
Comment 3 Sven Gothel 2019-08-23 08:05:21 CEST
This is now an Annotation, as the bug does not come from JogAmp,
but is a regression from Mesa 13.0.6 -> 18.3.6
Comment 4 Sven Gothel 2019-08-23 08:10:14 CEST
Workaround in jogamp-scripting 6f2281165da079fe718ed340cb4c6102a45d0ddb
for unit tests, i.e.: export LIBGL_ALWAYS_SOFTWARE=true
Comment 5 Sven Gothel 2019-12-08 03:56:15 CET
DEFECT -> ANNOTATION

Resolved for us, but we should communicated this issue w/ Mesa and the driver developer if resources and time allows.