-
Bug
-
Resolution: Fixed
-
P2
-
fx2.0
-
windows win-hi
WebNode.Guimark2-Bitmap benchmark hangs with both hardware and software pipelines.
Here is the stack trace from jstack:
2011-05-31 13:16:03
Full thread dump Java HotSpot(TM) Client VM (19.0-b09 mixed mode, sharing):
"Prism Font Disposer" daemon prio=10 tid=0x031ff000 nid=0xb48 in Object.wait() [0x045df000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x23089500> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x23089500> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.t2k.Disposer.run(Disposer.java:71)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"pool-2-thread-15" prio=6 tid=0x0312d400 nid=0x274 waiting on condition [0x03f5f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x22fc1dc0> (a java.util.concurrent.Semaphore$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.Semaphore.acquire(Unknown Source)
at com.sun.webpane.webkit.network.ByteBufferPool$ByteBufferAllocatorImpl.allocate(ByteBufferPool.java:77)
at com.sun.webpane.webkit.network.URLFetcher.processInput(URLFetcher.java:389)
at com.sun.webpane.webkit.network.URLFetcher.doGet(URLFetcher.java:560)
at com.sun.webpane.webkit.network.URLFetcher.doRun(URLFetcher.java:599)
at com.sun.webpane.webkit.network.URLFetcher.access$000(URLFetcher.java:29)
at com.sun.webpane.webkit.network.URLFetcher$1.run(URLFetcher.java:569)
at com.sun.webpane.webkit.network.URLFetcher$1.run(URLFetcher.java:566)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.webpane.webkit.network.URLFetcher.run(URLFetcher.java:566)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- <0x22effd18> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
"Disposer" daemon prio=10 tid=0x030b4c00 nid=0x960 in Object.wait() [0x03a2f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x280925c8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x280925c8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.webpane.platform.Disposer.run(Disposer.java:65)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"WebPane-Timer" daemon prio=6 tid=0x030a2400 nid=0x6f0 in Object.wait() [0x0353f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x280925f0> (a com.sun.webpane.webkit.Timer)
at java.lang.Object.wait(Object.java:485)
at com.sun.webpane.webkit.Timer.run(Timer.java:55)
- locked <0x280925f0> (a com.sun.webpane.webkit.Timer)
Locked ownable synchronizers:
- None
"Thread-1" daemon prio=6 tid=0x03051400 nid=0xe44 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Disposer" daemon prio=10 tid=0x0304a800 nid=0x84c in Object.wait() [0x032cf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x27f44ba8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x27f44ba8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.glass.utils.Disposer.run(Disposer.java:64)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"JavaFX Application Thread" prio=6 tid=0x02be9400 nid=0xc84 runnable [0x0327e000]
java.lang.Thread.State: RUNNABLE
at com.sun.javafx.iio.png.PNGImageLoader.readMetadata(PNGImageLoader.java:673)
- locked <0x232c8118> (a com.sun.javafx.iio.png.PNGImageLoader)
at com.sun.javafx.iio.png.PNGImageLoader.readImage(PNGImageLoader.java:1528)
- locked <0x232c8118> (a com.sun.javafx.iio.png.PNGImageLoader)
at com.sun.javafx.iio.png.PNGImageLoader.load(PNGImageLoader.java:187)
at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:316)
at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:267)
at com.sun.webpane.sg.prism.WCImgDecoderImpl.loadFrames(WCImgDecoderImpl.java:112)
at com.sun.webpane.sg.prism.WCImgDecoderImpl.setImageData(WCImgDecoderImpl.java:84)
at com.sun.webpane.webkit.network.URLProcessor.writeCallback(Native Method)
at com.sun.webpane.webkit.network.URLProcessor.access$200(URLProcessor.java:19)
at com.sun.webpane.webkit.network.URLProcessor$2.run(URLProcessor.java:75)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$1$1.run(WinApplication.java:49)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"QuantumRenderer-0" daemon prio=6 tid=0x02be4800 nid=0x10c waiting on condition [0x02f1f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x27ee04f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$ObservedRunnable.run(QuantumRenderer.java:70)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Low Memory Detector" daemon prio=6 tid=0x02b1d400 nid=0x990 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"CompilerThread0" daemon prio=10 tid=0x02b18400 nid=0xa18 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Attach Listener" daemon prio=10 tid=0x02b15c00 nid=0xde8 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Signal Dispatcher" daemon prio=10 tid=0x02b14400 nid=0xe34 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Finalizer" daemon prio=8 tid=0x02b10c00 nid=0xdf0 in Object.wait() [0x02cdf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x27ee0828> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x27ee0828> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Reference Handler" daemon prio=10 tid=0x02b0c000 nid=0x8ac in Object.wait() [0x02c8f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x27ee00c8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x27ee00c8> (a java.lang.ref.Reference$Lock)
Locked ownable synchronizers:
- None
"main" prio=6 tid=0x002b7000 nid=0x6d4 waiting on condition [0x0090f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x22d4c428> (a java.util.concurrent.CountDownLatch$Sync)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.CountDownLatch.await(Unknown Source)
at fx.bm.util.Helpers.doAction(Helpers.java:75)
at fx.bm.FXBenchmark.testFXBenchmark(FXBenchmark.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at jrockit.bm.BenchmarkBase$MultiTest.test(Unknown Source)
at jrockit.bm.BenchmarkBase.benchmark(Unknown Source)
at jrockit.bm.Main.main(Unknown Source)
Locked ownable synchronizers:
- None
"VM Thread" prio=10 tid=0x02b0a800 nid=0xec4 runnable
"VM Periodic Task Thread" prio=10 tid=0x02b28000 nid=0x968 waiting on condition
JNI global references: 1612
========================================
The problem is easy reproduced with latest promoted fx2.0-b29.
Steps to reproduce:
> java -cp "rt/lib/jfxrt.jar;benchmarks-2.1.1.jar;FXBenchmark.jar;WebNodeTestSuite.jar" jrockit.bm.Main webnodetestsuite.bm.GUIMark2Benchmark -i 3 -tr 25 -wt 5 -resource guimark2-bitmap.html
or run target "run-bitmap-bm" from tests/performance/WebNodeTestSuite
Here is the stack trace from jstack:
2011-05-31 13:16:03
Full thread dump Java HotSpot(TM) Client VM (19.0-b09 mixed mode, sharing):
"Prism Font Disposer" daemon prio=10 tid=0x031ff000 nid=0xb48 in Object.wait() [0x045df000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x23089500> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x23089500> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.t2k.Disposer.run(Disposer.java:71)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"pool-2-thread-15" prio=6 tid=0x0312d400 nid=0x274 waiting on condition [0x03f5f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x22fc1dc0> (a java.util.concurrent.Semaphore$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.Semaphore.acquire(Unknown Source)
at com.sun.webpane.webkit.network.ByteBufferPool$ByteBufferAllocatorImpl.allocate(ByteBufferPool.java:77)
at com.sun.webpane.webkit.network.URLFetcher.processInput(URLFetcher.java:389)
at com.sun.webpane.webkit.network.URLFetcher.doGet(URLFetcher.java:560)
at com.sun.webpane.webkit.network.URLFetcher.doRun(URLFetcher.java:599)
at com.sun.webpane.webkit.network.URLFetcher.access$000(URLFetcher.java:29)
at com.sun.webpane.webkit.network.URLFetcher$1.run(URLFetcher.java:569)
at com.sun.webpane.webkit.network.URLFetcher$1.run(URLFetcher.java:566)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.webpane.webkit.network.URLFetcher.run(URLFetcher.java:566)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- <0x22effd18> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
"Disposer" daemon prio=10 tid=0x030b4c00 nid=0x960 in Object.wait() [0x03a2f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x280925c8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x280925c8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.webpane.platform.Disposer.run(Disposer.java:65)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"WebPane-Timer" daemon prio=6 tid=0x030a2400 nid=0x6f0 in Object.wait() [0x0353f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x280925f0> (a com.sun.webpane.webkit.Timer)
at java.lang.Object.wait(Object.java:485)
at com.sun.webpane.webkit.Timer.run(Timer.java:55)
- locked <0x280925f0> (a com.sun.webpane.webkit.Timer)
Locked ownable synchronizers:
- None
"Thread-1" daemon prio=6 tid=0x03051400 nid=0xe44 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Disposer" daemon prio=10 tid=0x0304a800 nid=0x84c in Object.wait() [0x032cf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x27f44ba8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x27f44ba8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.glass.utils.Disposer.run(Disposer.java:64)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"JavaFX Application Thread" prio=6 tid=0x02be9400 nid=0xc84 runnable [0x0327e000]
java.lang.Thread.State: RUNNABLE
at com.sun.javafx.iio.png.PNGImageLoader.readMetadata(PNGImageLoader.java:673)
- locked <0x232c8118> (a com.sun.javafx.iio.png.PNGImageLoader)
at com.sun.javafx.iio.png.PNGImageLoader.readImage(PNGImageLoader.java:1528)
- locked <0x232c8118> (a com.sun.javafx.iio.png.PNGImageLoader)
at com.sun.javafx.iio.png.PNGImageLoader.load(PNGImageLoader.java:187)
at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:316)
at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:267)
at com.sun.webpane.sg.prism.WCImgDecoderImpl.loadFrames(WCImgDecoderImpl.java:112)
at com.sun.webpane.sg.prism.WCImgDecoderImpl.setImageData(WCImgDecoderImpl.java:84)
at com.sun.webpane.webkit.network.URLProcessor.writeCallback(Native Method)
at com.sun.webpane.webkit.network.URLProcessor.access$200(URLProcessor.java:19)
at com.sun.webpane.webkit.network.URLProcessor$2.run(URLProcessor.java:75)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$1$1.run(WinApplication.java:49)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"QuantumRenderer-0" daemon prio=6 tid=0x02be4800 nid=0x10c waiting on condition [0x02f1f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x27ee04f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$ObservedRunnable.run(QuantumRenderer.java:70)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Low Memory Detector" daemon prio=6 tid=0x02b1d400 nid=0x990 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"CompilerThread0" daemon prio=10 tid=0x02b18400 nid=0xa18 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Attach Listener" daemon prio=10 tid=0x02b15c00 nid=0xde8 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Signal Dispatcher" daemon prio=10 tid=0x02b14400 nid=0xe34 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Finalizer" daemon prio=8 tid=0x02b10c00 nid=0xdf0 in Object.wait() [0x02cdf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x27ee0828> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x27ee0828> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Reference Handler" daemon prio=10 tid=0x02b0c000 nid=0x8ac in Object.wait() [0x02c8f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x27ee00c8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x27ee00c8> (a java.lang.ref.Reference$Lock)
Locked ownable synchronizers:
- None
"main" prio=6 tid=0x002b7000 nid=0x6d4 waiting on condition [0x0090f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x22d4c428> (a java.util.concurrent.CountDownLatch$Sync)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source)
at java.util.concurrent.CountDownLatch.await(Unknown Source)
at fx.bm.util.Helpers.doAction(Helpers.java:75)
at fx.bm.FXBenchmark.testFXBenchmark(FXBenchmark.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at jrockit.bm.BenchmarkBase$MultiTest.test(Unknown Source)
at jrockit.bm.BenchmarkBase.benchmark(Unknown Source)
at jrockit.bm.Main.main(Unknown Source)
Locked ownable synchronizers:
- None
"VM Thread" prio=10 tid=0x02b0a800 nid=0xec4 runnable
"VM Periodic Task Thread" prio=10 tid=0x02b28000 nid=0x968 waiting on condition
JNI global references: 1612
========================================
The problem is easy reproduced with latest promoted fx2.0-b29.
Steps to reproduce:
> java -cp "rt/lib/jfxrt.jar;benchmarks-2.1.1.jar;FXBenchmark.jar;WebNodeTestSuite.jar" jrockit.bm.Main webnodetestsuite.bm.GUIMark2Benchmark -i 3 -tr 25 -wt 5 -resource guimark2-bitmap.html
or run target "run-bitmap-bm" from tests/performance/WebNodeTestSuite
- is blocked by
-
JDK-8100934 tRNS transparency not supported for PNG images
- Resolved