I’ve tried the JOGL_SINGLE_THREADED_WORKAROUND with identical results as far as my app is concerned - i.e. the second window into which a canvas should have been placed remains blank, so it follows that no valid canvas was created as the original stack trace indicates. The only difference is that no console output or error messages are produced. I’ve also upgraded to the latest nvidia beta driver; that made no difference either.
I’m sure the assertion is real - questions are - what causes it and how can I avoid it? It looks to me like the AssertionError is just down to some dodgy clean up code - the real culprit is the wglShareLists. I certainly understand your desire for a simple test case but I don’t think that’s going to be possible - I’m dependent on about 20Mb of RCP and a ton of my own scaffolding for a start, and it only screws up one time in 5 here (although once it does screw up, it keeps on screwing up until the machine is rebooted).
I have “next” and “last” buttons in my app which runs the same code that fails on start up - it checks for a valid canvas and rendering thread and creates them if they don’t exist. During startup the wglShareLists call fails, but when I hit the next or last button it succeeds and the window bursts into glorious life. So, Ken, what precondition am I not meeting on startup? I can file a report if you’d still like me too - would you be able to paste a link to your issue tracking system? For what it’s worth, the full stack trace is below.
As an aside - I just saw the Linux thread and I’m getting hangs on exit on Windows too - thread lock problems I guess. I have to use the eclipse debugger to break out of it.
Thanks for any help at all…
Henrietta
net.java.games.jogl.GLException: wglShareLists(0x10001, 0x10002) failed
at net.java.games.jogl.impl.windows.WindowsGLContext.makeCurrent(WindowsGLContext.java:161)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.makeCurrent(WindowsOnscreenGLContext.java:129)
at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:246)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.invokeGL(WindowsOnscreenGLContext.java:76)
at net.java.games.jogl.GLCanvas.withSingleThreadedWorkaroundDo(GLCanvas.java:228)
at net.java.games.jogl.GLCanvas.reshape(GLCanvas.java:125)
at java.awt.Component.setBounds(Component.java:1847)
at org.eclipse.ui.internal.PartPane$2.run(PartPane.java:148)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at org.eclipse.ui.internal.PartPane.doCreateChildControl(PartPane.java:144)
at org.eclipse.ui.internal.ViewPane.doCreateChildControl(ViewPane.java:135)
at org.eclipse.ui.internal.PartPane.createChildControl(PartPane.java:349)
at org.eclipse.ui.internal.ViewFactory$1.run(ViewFactory.java:398)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at org.eclipse.ui.internal.ViewFactory.busyRestoreView(ViewFactory.java:287)
at org.eclipse.ui.internal.ViewFactory$2.run(ViewFactory.java:582)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
at org.eclipse.ui.internal.ViewFactory.restoreView(ViewFactory.java:579)
at org.eclipse.ui.internal.ViewFactory$ViewReference.getPart(ViewFactory.java:106)
at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:329)
at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:607)
at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:126)
at org.eclipse.ui.internal.presentations.newapi.PresentablePartFolder.select(PresentablePartFolder.java:266)
at org.eclipse.ui.internal.presentations.newapi.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
at org.eclipse.ui.internal.presentations.newapi.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:381)
at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1034)
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:535)
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:472)
at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:477)
at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:230)
at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:779)
at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2028)
at org.eclipse.ui.internal.WorkbenchWindow$4.run(WorkbenchWindow.java:2158)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2144)
at org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:1676)
at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1414)
at org.eclipse.ui.internal.Workbench.access$10(Workbench.java:1370)
at org.eclipse.ui.internal.Workbench$15.run(Workbench.java:1273)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1207)
at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:171)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:659)
at org.eclipse.ui.internal.Workbench.init(Workbench.java:886)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1516)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:285)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:220)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
at org.eclipse.core.launcher.Main.run(Main.java:710)
at org.eclipse.core.launcher.Main.main(Main.java:694)
Exception in thread “AWT-EventQueue-0” java.lang.AssertionError: State of ShareSet corrupted; thought context net.java.games.jogl.impl.windows.WindowsOnscreenGLContext@1e940b should have been in created set but wasn’t
at net.java.games.jogl.impl.GLContextShareSet$ShareSet.contextDestroyed(GLContextShareSet.java:94)
at net.java.games.jogl.impl.GLContextShareSet.contextDestroyed(GLContextShareSet.java:136)
at net.java.games.jogl.impl.GLContext.destroy(GLContext.java:640)
at net.java.games.jogl.GLCanvas.removeNotify(GLCanvas.java:98)
at java.awt.Container.removeNotify(Container.java:2527)
at java.awt.Frame.removeNotify(Frame.java:904)
at java.awt.Window$1DisposeAction.run(Window.java:621)
at java.awt.Window.doDispose(Window.java:633)
at java.awt.Window.dispose(Window.java:588)
at org.eclipse.swt.awt.SWT_AWT$6.run(SWT_AWT.java:213)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Unhandled event loop exception
Reason:
State of ShareSet corrupted; thought context net.java.games.jogl.impl.windows.WindowsOnscreenGLContext@1e940b should have been in created set but wasn’t