On exactly the same line of code fixed under
6985593: Crash in Java_sun_java2d_loops_MaskBlit_MaskBlit on oel5.5-x64
with that fix in place, I am now seeing a hang with Java2Demo 64 bit JDK
on Linux when running with -Dsun.java2d.xrender=True.
Java2Demo was running on OEL 5.6 (same system on which the executing JDK was built)
"AWT-EventQueue-0" prio=10 tid=0x00000000012f6800 nid=0x89c runnable [0x0000000041788000]
java.lang.Thread.State: RUNNABLE
at sun.java2d.loops.Blit.Blit(Native Method)
at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:146) at sun.java2d.xr.XrSwToPMBlit.Blit(XRPMBlitLoops.java:348)
It was left running and the hang was there when I came back. Multiple
stack traces show the same place and the app was using 99.4% CPU and
its still on screen but not repainting at all.
Looks like the call to Blit never returns.
Full stack dump :
Full thread dump Java HotSpot(TM) 64-Bit Server VM (21.0-b05 mixed mode):
"TextureAnim Demo" prio=10 tid=0x00007f252c243000 nid=0x4018 runnable [0x0000000041155000]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.sleep(Native Method)
at java2d.AnimatingSurface.run(AnimatingSurface.java:89)
at java.lang.Thread.run(Thread.java:722)
"GradAnim Demo" prio=10 tid=0x00007f252c13e000 nid=0x4017 runnable [0x0000000040ea0000]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.sleep(Native Method)
at java2d.AnimatingSurface.run(AnimatingSurface.java:89)
at java.lang.Thread.run(Thread.java:722)
"PerformanceMonitor" prio=10 tid=0x00007f252c133000 nid=0x4007 waiting on condition [0x0000000040d9f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at java2d.PerformanceMonitor$Surface.run(PerformanceMonitor.java:187)
at java.lang.Thread.run(Thread.java:722)
"MemoryMonitor" prio=10 tid=0x00007f252c2a7000 nid=0x4006 waiting on condition [0x0000000041256000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at java2d.MemoryMonitor$Surface.run(MemoryMonitor.java:302)
at java.lang.Thread.run(Thread.java:722)
"Image Animator 0" daemon prio=10 tid=0x00007f252c13a800 nid=0x930 waiting on condition [0x000000004197a000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sun.awt.image.GifFrame.dispose(GifImageDecoder.java:670)
at sun.awt.image.GifImageDecoder.readImage(GifImageDecoder.java:458)
at sun.awt.image.GifImageDecoder.produceImage(GifImageDecoder.java:212)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:269)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
"TimerQueue" daemon prio=10 tid=0x00007f252c137000 nid=0x8a2 waiting on condition [0x0000000041ea6000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d16767a8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:209)
at javax.swing.TimerQueue.run(TimerQueue.java:171)
at java.lang.Thread.run(Thread.java:722)
"DestroyJavaVM" prio=10 tid=0x00007f252c134800 nid=0x890 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"AWT-EventQueue-0" prio=10 tid=0x00000000012f6800 nid=0x89c runnable [0x0000000041788000]
java.lang.Thread.State: RUNNABLE
at sun.java2d.loops.Blit.Blit(Native Method)
at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:146)
at sun.java2d.xr.XrSwToPMBlit.Blit(XRPMBlitLoops.java:348)
at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:953)
at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:575)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:71)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1008)
at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3062)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3047)
at java2d.PerformanceMonitor$Surface.paint(PerformanceMonitor.java:102)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:660)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
"AWT-Shutdown" prio=10 tid=0x0000000001202000 nid=0x89b in Object.wait() [0x0000000040c57000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d1702200> (a java.lang.Object)
at java.lang.Object.wait(Object.java:504)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:287)
- locked <0x00000000d1702200> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:722)
"AWT-XAWT" daemon prio=10 tid=0x00000000010a9800 nid=0x89a waiting on condition [0x0000000041553000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d1765c90> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
at sun.awt.SunToolkit.awtLock(SunToolkit.java:244)
at sun.awt.X11.XToolkit.waitForEvents(Native Method)
at sun.awt.X11.XToolkit.run(XToolkit.java:625)
at sun.awt.X11.XToolkit.run(XToolkit.java:589)
at java.lang.Thread.run(Thread.java:722)
"Java2D Disposer" daemon prio=10 tid=0x000000000107f800 nid=0x899 in Object.wait() [0x0000000041054000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d1702388> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x00000000d1702388> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at sun.java2d.Disposer.run(Disposer.java:145)
at java.lang.Thread.run(Thread.java:722)
"Service Thread" daemon prio=10 tid=0x0000000000efd800 nid=0x897 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=10 tid=0x0000000000efb000 nid=0x896 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=10 tid=0x0000000000ef0000 nid=0x895 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x0000000000eed800 nid=0x894 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=10 tid=0x0000000000e9f800 nid=0x893 in Object.wait() [0x0000000041687000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d17025d0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x00000000d17025d0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)
"Reference Handler" daemon prio=10 tid=0x0000000000e98000 nid=0x892 in Object.wait() [0x0000000040679000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d1702668> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:504)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x00000000d1702668> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=10 tid=0x0000000000e90800 nid=0x891 runnable
"VM Periodic Task Thread" prio=10 tid=0x0000000000f08800 nid=0x898 waiting on condition
JNI global references: 7362
Heap
def new generation total 19328K, used 9384K [0x00000000bc400000, 0x00000000bd8f0000, 0x00000000d1200000)
eden space 17216K, 54% used [0x00000000bc400000, 0x00000000bcd29f80, 0x00000000bd4d0000)
from space 2112K, 0% used [0x00000000bd6e0000, 0x00000000bd6e0118, 0x00000000bd8f0000)
to space 2112K, 0% used [0x00000000bd4d0000, 0x00000000bd4d0000, 0x00000000bd6e0000)
tenured generation total 42752K, used 11109K [0x00000000d1200000, 0x00000000d3bc0000, 0x00000000fae00000)
the space 42752K, 25% used [0x00000000d1200000, 0x00000000d1cd9410, 0x00000000d1cd9600, 0x00000000d3bc0000)
compacting perm gen total 21248K, used 18800K [0x00000000fae00000, 0x00000000fc2c0000, 0x0000000100000000)
the space 21248K, 88% used [0x00000000fae00000, 0x00000000fc05c2e0, 0x00000000fc05c400, 0x00000000fc2c0000)
No shared spaces configured.