Login  Register

Multiple GLCanvas/FPSAnimator Hang

Posted by sfriend on Nov 11, 2013; 3:32pm
URL: https://forum.jogamp.org/Multiple-GLCanvas-FPSAnimator-Hang-tp4030581.html

When using multiple GLCanvas with FPSAnimators it hangs about 10 percent of the time when creating the context for the new GLCanvas. This is running on Windows XP with AMD E4690 graphics device.

It always fails at the same location and always produces the following exception:
Exception in thread "AWT-EventQueue-0" javax.media.opengl.GLException: javax.media.opengl.GLException: JOGL-GLWorkerThread-: WindowsWGLContex.createContextImpl ctx !ARB, profile > GL2 requested (OpenGL >= 3.0.1). Requested: GLProfile[GL3bc/GL3bc.hw], current: 1.1 (Compat profile, hardware) - 1.1.0

The previously opened GLCanvas/FPSAnimator continues to function properly, however any attempts to create new ones fail with the same problem.

More of the log with debug and Traceswitch follows:
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x15b9e1c, ctx 0x1000b
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x15b9e1c, ctx 0x1000b, surf 0x5701012b - switch - CONTEXT_CURRENT - stateTracker.on true - <11496a4, ae0228>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x15b9e1c, ctx 0x1000b, surf 0x5701012b, inDestruction: false, <11496a4, ae0228>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x15b9e1c, ctx 0x1000b, surf 0x0 - switch - <11496a4, ae0228>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x10bf5a4, ctx 0x10008, surf 0x0 - <1baba00, 9739c>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x10bf5a4, ctx 0x10008
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x10bf5a4, ctx 0x10008, surf 0xc6010c9a - switch - CONTEXT_CURRENT - stateTracker.on true - <1baba00, 9739c>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x10bf5a4, ctx 0x10008, surf 0xc6010c9a, inDestruction: false, <1baba00, 9739c>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x10bf5a4, ctx 0x10008, surf 0x0 - switch - <1baba00, 9739c>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x1f2e931, ctx 0x1000d, surf 0x0 - <159faab, 57f86c>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x1f2e931, ctx 0x1000d
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x1f2e931, ctx 0x1000d, surf 0x620108bb - switch - CONTEXT_CURRENT - stateTracker.on true - <159faab, 57f86c>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x1f2e931, ctx 0x1000d, surf 0x620108bb, inDestruction: false, <159faab, 57f86c>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x1f2e931, ctx 0x1000d, surf 0x0 - switch - <159faab, 57f86c>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x874df9, ctx 0x10009, surf 0x0 - <13a54bf, 91e3ec>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x874df9, ctx 0x10009
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x874df9, ctx 0x10009, surf 0xc6010c9a - switch - CONTEXT_CURRENT - stateTracker.on true - <13a54bf, 91e3ec>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x874df9, ctx 0x10009, surf 0xc6010c9a, inDestruction: false, <13a54bf, 91e3ec>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x874df9, ctx 0x10009, surf 0x0 - switch - <13a54bf, 91e3ec>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x15b9e1c, ctx 0x1000b, surf 0x0 - <11496a4, ae0228>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x15b9e1c, ctx 0x1000b
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x15b9e1c, ctx 0x1000b, surf 0x620108bb - switch - CONTEXT_CURRENT - stateTracker.on true - <11496a4, ae0228>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x15b9e1c, ctx 0x1000b, surf 0x620108bb, inDestruction: false, <11496a4, ae0228>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x15b9e1c, ctx 0x1000b, surf 0x0 - switch - <11496a4, ae0228>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x874df9, ctx 0x10009, surf 0x0 - <13a54bf, 91e3ec>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x874df9, ctx 0x10009
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x874df9, ctx 0x10009, surf 0xc6010c9a - switch - CONTEXT_CURRENT - stateTracker.on true - <13a54bf, 91e3ec>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x874df9, ctx 0x10009, surf 0xc6010c9a, inDestruction: false, <13a54bf, 91e3ec>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x874df9, ctx 0x10009, surf 0x0 - switch - <13a54bf, 91e3ec>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x186728d, ctx 0x0, surf 0x0 - <1f56ae9, 13dec1a>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: createImpl: START GLCaps[wgl vid 0x2 arb: rgba 8/8/8/8, trans-rgba 0x0/0/0/0, accum-rgba 0/0/0/0, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL3bc/GL3bc.hw], on-scr[.]], share WindowsWGLContext [Version 3.3 (Compat profile, arb, ES2 compat, FBO, hardware) - 3.3.11631 Compatibility Profile Context [GL 3.3.0, vendor 0.0.0 (n/a)], options 0x1403, this 0x132bb00, handle 0x20000, isShared true, jogamp.opengl.gl4.GL4bcImpl@18c4765,
         quirks: [NoDoubleBufferedBitmap, NeedCurrCtx4ARBPixFmtQueries, NeedCurrCtx4ARBCreateContext],
        Drawable: WindowsPbufferWGLDrawable[Realized true,
        Factory   jogamp.opengl.windows.wgl.WindowsWGLDrawableFactory@c17f01,
        Handle    0xc010b52,
        Surface   WrappedSurface[ displayHandle 0x0
, surfaceHandle 0xc010b52
, size 1x1
, UOB[ OWNS_DEVICE ]
, WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[]], idx 0], pfdID 2, ARB-Choosen true,
        requested GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL3bc/GL3bc.hw], offscr[pbuffer]],
        chosen    GLCaps[wgl vid 0x2 arb: rgba 8/8/8/8, opaque, accum-rgba 0/0/0/0, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL3bc/GL3bc.hw], offscr[pbuffer]]]
, surfaceLock <851004, 1de8c6b>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
, UpstreamSurfaceHookMutableSize[ 1x1]
, upstreamSurface false ]]]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x15348fb, ctx 0x20007, surf 0x0 - <dc7d5f, 1ab0d58>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x15348fb, ctx 0x20007
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x15348fb, ctx 0x20007, surf 0x620108bb - switch - CONTEXT_CURRENT - stateTracker.on false - <dc7d5f, 1ab0d58>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: createContextARB: mappedVersionsAvailableSet(decon): true
JOGL-GLWorkerThread-: createContextARB: Requested 3.0 (Compat profile, arb, hardware)
JOGL-GLWorkerThread-: createContextARB: Mapped 3.3 (Compat profile, arb, ES2 compat, FBO, hardware)
JOGL-GLWorkerThread- - WindowWGLContext.createContextARBImpl: 3.3 (Compat profile, arb, ES2 compat, FBO, hardware) - @creation, handle 0x5701012b, share 0x20000, direct true, wglCreateContextAttribsARB: 0x69072710
JOGL-GLWorkerThread-: createContextARBImpl: NO 3.3 (Compat profile, arb, ES2 compat, FBO, hardware) - @creation
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x15348fb, ctx 0x20007, surf 0x620108bb, inDestruction: false, <dc7d5f, 1ab0d58>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x15348fb, ctx 0x20007, surf 0x0 - switch - <dc7d5f, 1ab0d58>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: Initializing WGL extension address table: WGL-.windows_decon_0
JOGL-GLWorkerThread-: GLContext WGL ProcAddressTable reusing key(WGL-.windows_decon_0) -> 0x9e3fa6
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail: Given WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[]] - 0.0 (Compat profile, hardware) - 1.1.0
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail: Pre version verification - expected 0.0 (Compat profile, hardware), strictMatch false, glVersionsMapping false
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail: Version verification (Int): 1.1.0, 0.0.0
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail: Version verification (String): 1.1.0, 1.1.0
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail: Post version verification req 0.0 (Compat profile, hardware) -> has 1.1 (Compat profile, hardware), strictMatch false, versionValidated true, versionGL3IntFailed true
Quirk: NoDoubleBufferedBitmap: cause: OS WINDOWS
Quirks local: [NoDoubleBufferedBitmap]
Quirks sticky on WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[]]: []
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail.0 validated FQN: .windows_decon_0-0x1010002 - 1.1 (Compat profile, hardware) - 1.1.0
JOGL-GLWorkerThread-: GLContext GL ProcAddressTable reusing key(.windows_decon_0-0x1010002) -> 0x164624e
JOGL-GLWorkerThread-: GLContext GL ExtensionAvailabilityCache reusing key(.windows_decon_0-0x1010002) -> 0x171f9da - entries: 6
JOGL-GLWorkerThread-: GLContext.setGLFuncAvail.X: OK .windows_decon_0-0x1010002 - 1.1 (Compat profile, hardware) - glErr 0x500
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.1]: Context lock.unlock() due to error, res CONTEXT_NOT_CURRENT, <1f56ae9, 13dec1a>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
Exception in thread "AWT-EventQueue-0" javax.media.opengl.GLException: javax.media.opengl.GLException: JOGL-GLWorkerThread-: WindowsWGLContex.createContextImpl ctx !ARB, profile > GL2 requested (OpenGL >= 3.0.1). Requested: GLProfile[GL3bc/GL3bc.hw], current: 1.1 (Compat profile, hardware) - 1.1.0
        at jogamp.opengl.ThreadingImpl.invokeOnWorkerThread(ThreadingImpl.java:225)
        at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:108)
        at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
        at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
        at javax.media.opengl.Threading.invoke(Threading.java:191)
        at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:528)
        at javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:582)
        at sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
        at sun.awt.RepaintArea.paint(RepaintArea.java:240)
        at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:347)
        at java.awt.Component.dispatchEventImpl(Component.java:4937)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:708)
        at java.awt.EventQueue$4.run(EventQueue.java:706)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: javax.media.opengl.GLException: JOGL-GLWorkerThread-: WindowsWGLContex.createContextImpl ctx !ARB, profile > GL2 requested (OpenGL >= 3.0.1). Requested: GLProfile[GL3bc/GL3bc.hw], current: 1.1 (Compat profile, hardware) - 1.1.0
        at jogamp.opengl.windows.wgl.WindowsWGLContext.createImpl(WindowsWGLContext.java:377)
        at jogamp.opengl.GLContextImpl.makeCurrentWithinLock(GLContextImpl.java:660)
        at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:562)
        at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:519)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1089)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:978)
        at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1282)
        at jogamp.opengl.GLWorkerThread$WorkerRunnable.run(GLWorkerThread.java:258)
        at java.lang.Thread.run(Thread.java:744)
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x1f2e931, ctx 0x1000d, surf 0x0 - <159faab, 57f86c>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x1f2e931, ctx 0x1000d
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x1f2e931, ctx 0x1000d, surf 0xc6010c9a - switch - CONTEXT_CURRENT - stateTracker.on true - <159faab, 57f86c>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x1f2e931, ctx 0x1000d, surf 0xc6010c9a, inDestruction: false, <159faab, 57f86c>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x1f2e931, ctx 0x1000d, surf 0x0 - switch - <159faab, 57f86c>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x15b9e1c, ctx 0x1000b, surf 0x0 - <11496a4, ae0228>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - obj 0x15b9e1c, ctx 0x1000b
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.X3]: obj 0x15b9e1c, ctx 0x1000b, surf 0x5701012b - switch - CONTEXT_CURRENT - stateTracker.on true - <11496a4, ae0228>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.0]: obj 0x15b9e1c, ctx 0x1000b, surf 0x5701012b, inDestruction: false, <11496a4, ae0228>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
JOGL-GLWorkerThread-: GLContext.ContextSwitch: - setCurrent() - NULL
JOGL-GLWorkerThread-: GLContext.ContextSwitch[release.X]: obj 0x15b9e1c, ctx 0x1000b, surf 0x0 - switch - <11496a4, ae0228>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x2c9cd5, ctx 0x0, surf 0x0 - <613128, e248ac>[count 0, qsz 0, owner <NULL>]
JOGL-GLWorkerThread-: createImpl: START GLCaps[wgl vid 0x2 arb: rgba 8/8/8/8, trans-rgba 0x0/0/0/0, accum-rgba 0/0/0/0, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL3bc/GL3bc.hw], on-scr[.]], share WindowsWGLContext [Version 3.3 (Compat profile, arb, ES2 compat, FBO, hardware) - 3.3.11631 Compatibility Profile Context [GL 3.3.0, vendor 0.0.0 (n/a)], options 0x1403, this 0x132bb00, handle 0x20000, isShared true, jogamp.opengl.gl4.GL4bcImpl@18c4765,
         quirks: [NoDoubleBufferedBitmap, NeedCurrCtx4ARBPixFmtQueries, NeedCurrCtx4ARBCreateContext],
        Drawable: WindowsPbufferWGLDrawable[Realized true,
        Factory   jogamp.opengl.windows.wgl.WindowsWGLDrawableFactory@c17f01,
        Handle    0xc010b52,
        Surface   WrappedSurface[ displayHandle 0x0
, surfaceHandle 0xc010b52
, size 1x1
, UOB[ OWNS_DEVICE ]
, WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[]], idx 0], pfdID 2, ARB-Choosen true,
        requested GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL3bc/GL3bc.hw], offscr[pbuffer]],
        chosen    GLCaps[wgl vid 0x2 arb: rgba 8/8/8/8, opaque, accum-rgba 0/0/0/0, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL3bc/GL3bc.hw], offscr[pbuffer]]]
, surfaceLock <851004, 1de8c6b>[count 1, qsz 0, owner <JOGL-GLWorkerThread->]
, UpstreamSurfaceHookMutableSize[ 1x1]
, upstreamSurface false ]]]
JOGL-GLWorkerThread-: GLContext.ContextSwitch[makeCurrent.0]: obj 0x15348fb, ctx 0x20007, surf 0x0 - <dc7d5f, 1ab0d58>[count 0, qsz 0, owner <NULL>]
JOGL-GLW