---- Reported by bombadil 2004-07-22 11:29:17 ---- Xith applications on my Ati Radeon 9600pro just render the first frame with the JOGL binding, then the render loop "hangs". It applies to the Xith demos on http://xith.org/demo/com.xith3d.test.php With my own Xith application not even the first frame is being rendered. Specifing the -DATI_WORKAROUND=fase parameter makes the Xith apps to work on my Radeon 9600pro. However on an Ati Radeon 9800 XL I've seen the same "hang" effect with the JOGL version prior to the Ati-Workaround version, both for Xith and direct JOGL applications. Win2000, Ati Radeon 9600pro, Catalyst 4.7 (6.14.10.6458) Jogl v1.1 beta 04 (2004-07-16) Hitting Ctrl-Break during the Xith "hang" prints this: >>> Hit SPACE to toggle projection policy, or ESC to exit Using ATI workaround of dispatching display() on event thread Init GL is net.java.games.jogl.impl.windows.WindowsGLImpl OpenGL Renderer = RADEON 9600 x86/MMX/3DNow!/SSE OpenGL Version = 1.5.4454 Win2000 Release OpenGL Vendor = ATI Technologies Inc. Full thread dump Java HotSpot(TM) Client VM (1.4.2_05-b04 mixed mode): "AWT-EventQueue-0" prio=7 tid=0x182e40b8 nid=0x340 in Object.wait() [28bbf000.. 28bbfd88] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at java.awt.EventQueue.getNextEvent(Unknown Source) - locked <0x104fd0d8> (a java.awt.EventQueue) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x182d7598 nid=0x1e0 in Object.wait() [28b7f000..28b7fd88] at java.lang.Object.wait(Native Method) - waiting on <0x105b1a50> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x105b1a50> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Windows" daemon prio=7 tid=0x182c9b08 nid=0x554 runnable [2867f000.. 2867fd88] at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=5 tid=0x009a03d0 nid=0x4e4 in Object.wait() [2863f000.. 2863fd88] at java.lang.Object.wait(Native Method) - waiting on <0x10512d20> (a java.lang.Object) at java.lang.Object.wait(Unknown Source) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x10512d20> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Signal Dispatcher" daemon prio=10 tid=0x00952b60 nid=0x540 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x00950110 nid=0x4ac in Object.wait() [1816f000.. 1816fd88] at java.lang.Object.wait(Native Method) - waiting on <0x104f6c18> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x104f6c18> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x0094ed38 nid=0x1e8 in Object.wait() [1812f000..1812fd88] at java.lang.Object.wait(Native Method) - waiting on <0x104f6c80> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Unknown Source) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x104f6c80> (a java.lang.ref.Reference$Lock) "main" prio=5 tid=0x00235858 nid=0x1c0 waiting on condition [6f000..6fc3c] at java.lang.Thread.sleep(Native Method) at com.xith3d.test.Xith3DMorphPyramid2CubeTest. runTest(Xith3DMorphPyramid2CubeTest.java:226) at com.xith3d.test.Xith3DMorphPyramid2CubeTest. init(Xith3DMorphPyramid2CubeTest.java:211) at com.xith3d.test.Xith3DMorphPyramid2CubeTest. main(Xith3DMorphPyramid2CubeTest.java:264) "VM Thread" prio=5 tid=0x0094dc18 nid=0x4d4 runnable "VM Periodic Task Thread" prio=10 tid=0x009555a8 nid=0x4c8 waiting on condition "Suspend Checker Thread" prio=10 tid=0x00952210 nid=0x548 runnable <<< ---- Additional Comments From kbr 2004-07-22 16:06:09 ---- There isn't an obvious deadlock in the stack trace below, although it isn't clear how long or why the main thread is sleeping. Can you add some printing code to see whether the main loop is running properly? Can you also add some printing code to the underlying GLEventListener.display() routine in Xith3D (or some similar routine called during every render pass) to see whether the code is being executed? ---- Additional Comments From caoimhin 2004-07-23 11:55:46 ---- Created an attachment Thread dump of gears ---- Additional Comments From kbr 2004-08-03 10:51:05 ---- This was a race condition between JOGL's automatic discovery that the ATI_WORKAROUND was needed and the creation of the first GLCanvas and associated Animator. The need for disabling the setRenderingThread optimization was computed too late, incorrectly locking out other threads (in particular, the AWT event queue thread) from performing rendering of the component. Fixed by users gkw and kbr. --- Bug imported by sgothel@jausoft.com 2010-03-24 07:46 EDT --- This bug was previously known as _bug_ 98 at https://jogl.dev.java.net/bugs/show_bug.cgi?id=98 Imported an attachment (id=24) The original submitter of attachment 24 [details] is unknown. Reassigning to the person who moved it here: sgothel@jausoft.com.