JOGL nightly build crash on Mac OSX 10.6

Hi gurus,

One of our JavaFX application crashes consistently on one Mac OSX 10.6, while it works well on other Mac books.

We checked the crash log, and found it crashed at com.sun.opengl.impl.macosx.cgl.CGL.deleteContext().

Someone said he had resolved the issue by replacing jogl to latest nightly build. Please refer to http://forums.sun.com/thread.jspa?threadID=5413583.

We did resolve it before(by replacing jogl library), but now it crashed again. We tried to replace jogl library, but it still kept crashing.

Could you please tell me that it’s a jogl issue or Mac OSX driver issue?

If you need more information, please let me know.

Thanks,
Jacky

-------------crash log--------------------
Process: java [812]
Path: /usr/bin/java
Identifier: com.apple.javajdk16.cmd
Version: 1.0 (1.0)
Code Type: X86-64 (Native)
Parent Process: sh [794]

PlugIn Path: /var/root/Library/Java/Extensions/libjogl_gl2.jnilib
PlugIn Identifier: libjogl_gl2.jnilib
PlugIn Version: ??? (???)

Date/Time: 2010-02-23 12:21:06.462 +0800
OS Version: Mac OS X 10.6.2 (10C540)
Report Version: 6

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread: 14 Java: AWT-EventQueue-0

Application Specific Information:

Java information:
Exception type: Bus Error (0xa) at pc=0x00000001257c8a54

Java VM: Java HotSpot™ 64-Bit Server VM (14.3-b01-101 mixed mode macosx-amd64)

Current thread (0x0000000110a1c800): JavaThread “AWT-EventQueue-0” [_thread_in_native, id=594030592, stack(0x0000000123583000,0x0000000123683000)]
Stack: [0x0000000123583000,0x0000000123683000]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j com.sun.opengl.impl.macosx.cgl.CGL.deleteContext(J)Z+0
j com.sun.opengl.impl.macosx.cgl.MacOSXPbufferCGLContext$NSOpenGLImpl.destroy(J)Z+1
j com.sun.opengl.impl.macosx.cgl.MacOSXPbufferCGLContext.destroyImpl()V+17
j com.sun.opengl.impl.GLContextImpl.destroy()V+64
j com.sun.scenario.effect.impl.j2d.jogl.JOGLRenderer.isHwValid(Lcom/sun/scenario/effect/FilterContext;)Z+174
j com.sun.scenario.effect.impl.j2d.jogl.JOGLRenderer.createRenderer(Lcom/sun/scenario/effect/FilterContext;)Lcom/sun/scenario/effect/impl/j2d/jogl/JOGLRenderer;+1
v ~StubRoutines::call_stub
j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87
j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
j com.sun.scenario.effect.impl.RendererFactory.createJOGLRenderer(Lcom/sun/scenario/effect/FilterContext;)Lcom/sun/scenario/effect/impl/Renderer;+58
j com.sun.scenario.effect.impl.RendererFactory.access$600(Lcom/sun/scenario/effect/FilterContext;)Lcom/sun/scenario/effect/impl/Renderer;+1
j com.sun.scenario.effect.impl.RendererFactory$1.run()Lcom/sun/scenario/effect/impl/Renderer;+91
j com.sun.scenario.effect.impl.RendererFactory$1.run()Ljava/lang/Object;+1
v ~StubRoutines::call_stub
j java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;+0
j com.sun.scenario.effect.impl.RendererFactory.createRenderer(Lcom/sun/scenario/effect/FilterContext;)Lcom/sun/scenario/effect/impl/Renderer;+8
j com.sun.scenario.effect.impl.Renderer.getRenderer(Lcom/sun/scenario/effect/FilterContext;)Lcom/sun/scenario/effect/impl/Renderer;+139
j com.sun.scenario.effect.Effect.getCompatibleImage(Lcom/sun/scenario/effect/FilterContext;II)Lcom/sun/scenario/effect/Filterable;+1
j com.sun.scenario.scenegraph.SGNode.renderOpacity(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+197
j com.sun.scenario.scenegraph.SGNode.doRender(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+43
j com.sun.scenario.scenegraph.SGNode.render(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+154
j com.sun.scenario.scenegraph.SGGroup.renderContent(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+48
j com.sun.scenario.scenegraph.SGNode.doRender(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+103
j com.sun.scenario.scenegraph.SGNode.render(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+76
j com.sun.scenario.scenegraph.SGGroup.renderContent(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+48
j com.sun.scenario.scenegraph.SGNode.doRender(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+103
j com.sun.scenario.scenegraph.SGNode.render(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+76
j com.sun.scenario.scenegraph.SGGroup.renderContent(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+48
j com.sun.scenario.scenegraph.SGNode.doRender(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+103
j com.sun.scenario.scenegraph.SGNode.render(Ljava/awt/Graphics2D;Lcom/sun/javafx/geom/Bounds2D;Lcom/sun/javafx/geom/transform/BaseTransform;)V+76
j com.sun.scenario.scenegraph.JSGPanel.paintComponent(Ljava/awt/Graphics;)V+172
j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+290
j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+473
j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+322
j javax.swing.JLayeredPane.paint(Ljava/awt/Graphics;)V+73
j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+473
j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+322
j com.sun.javafx.tk.swing.WindowImpl$2$1.paint(Ljava/awt/Graphics;)V+16
j javax.swing.JComponent._paintImmediately(IIII)V+763
j javax.swing.JComponent.paintImmediately(IIII)V+83
j javax.swing.JComponent.paintImmediately(Ljava/awt/Rectangle;)V+17
j com.sun.scenario.scenegraph.JSGPanel.repaintDirtyRegions(Z)V+119
j com.sun.scenario.scenegraph.JSGPanelRepainter.repaintAll()V+54
j com.sun.scenario.scenegraph.JSGPanelRepainter$FrameDisplay.run()V+7
j com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(J)V+248
j com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run()V+38
j com.sun.embeddedswing.EmbeddedEventQueue.doPulse()V+27
j com.sun.embeddedswing.EmbeddedEventQueue.access$000(Lcom/sun/embeddedswing/EmbeddedEventQueue;)V+1
j com.sun.embeddedswing.EmbeddedEventQueue$2.run()V+4
j java.awt.event.InvocationEvent.dispatch()V+47
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+26
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub

Java Threads: ( => current thread )
0x00000001020e8800 JavaThread “pool-1-thread-1” daemon [_thread_blocked, id=616628224, stack(0x0000000124b10000,0x0000000124c10000)]
0x00000001020e1800 JavaThread “Long sleeping thread” daemon [_thread_blocked, id=615567360, stack(0x0000000124a0d000,0x0000000124b0d000)]
0x00000001020f0000 JavaThread “Java2D Disposer” daemon [_thread_blocked, id=612413440, stack(0x000000012470b000,0x000000012480b000)]
0x0000000102002000 JavaThread “DestroyJavaVM” [_thread_blocked, id=5246976, stack(0x0000000100401000,0x0000000100501000)]
=>0x0000000110a1c800 JavaThread “AWT-EventQueue-0” [_thread_in_native, id=594030592, stack(0x0000000123583000,0x0000000123683000)]
0x0000000110a17000 JavaThread “AWT-Shutdown” [_thread_blocked, id=564936704, stack(0x00000001219c4000,0x0000000121ac4000)]
0x0000000110b4e800 JavaThread “AWT-AppKit” daemon [_thread_in_native, id=1893374944, stack(0x00007fff5f400000,0x00007fff5fc00000)]
0x0000000102031800 JavaThread “Low Memory Detector” daemon [_thread_blocked, id=288387072, stack(0x0000000111207000,0x0000000111307000)]
0x000000011082a800 JavaThread “CompilerThread1” daemon [_thread_blocked, id=287326208, stack(0x0000000111104000,0x0000000111204000)]
0x000000011082a000 JavaThread “CompilerThread0” daemon [_thread_blocked, id=286265344, stack(0x0000000111001000,0x0000000111101000)]
0x0000000110829000 JavaThread “Signal Dispatcher” daemon [_thread_blocked, id=275832832, stack(0x000000011060e000,0x000000011070e000)]
0x0000000102031000 JavaThread “Finalizer” daemon [_thread_blocked, id=274771968, stack(0x000000011050b000,0x000000011060b000)]
0x0000000102030000 JavaThread “Reference Handler” daemon [_thread_blocked, id=273711104, stack(0x0000000110408000,0x0000000110508000)]
Other Threads:
0x0000000102029000 VMThread [stack: 0x0000000110305000,0x0000000110405000] [id=272650240]
0x000000010203a800 WatcherThread [stack: 0x000000011130a000,0x000000011140a000] [id=289447936]

VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None

----cutted due to the post size limit ----

Hi!

Do you use the build that is on http://download.java.net or the one on github?

Also it appears you’ve placed the native libraries in the Java home, which is a bad idea since it may be that you’ve forgotten about an older copy or have mixed versions. I strongly recommend removing all jogl jars and libs from there and downloading a fresh copy into your project’s directory and set the library path manually.

Hi gouessej,
We’re using build on java.net. http://download.java.net/media/jogl/builds/nightly/.

Hi lhkbob,
There’s no jogl lib in the java home at the first time. We placed jogl libs since one javafx application crashed on the mac osx.

It happened also on one of your college’s mac book but worked on others’.

Could I disable CGL implementation and use another software render method? It’s just a testing application, and we don’t need high performence.

Thanks for your replies.

I don’t believe javafx uses jogl2. AFAIK it uses something around jogl 1.1.1. Replacing jogl 1 with jogl 2 will not work in general.
If you are updating jogl via classpath tricks always make sure that you also update gluegen which fits to the jogl version.

since javafx is proprietary we can’t help you much you could try to file a bug or get in contact with someone from oracle.