Deadlock on attempt to shutdown forked JVM/worker threads

Aleksey Shipilev aleksey.shipilev at oracle.com
Thu Aug 14 08:30:00 UTC 2014


On 08/14/2014 11:29 AM, Dmitry Vyazelenko wrote:
> Found one Java-level deadlock:
> =============================
> "Thread-0":
>   waiting to lock monitor 0x000000001131f088 (object 0x00000007059573f0, a org.openjdk.jmh.runner.link.BinaryLinkClient$ForwardingPrintStream),
>   which is held by "Thread-5"
> "Thread-5":
>   waiting to lock monitor 0x0000000011321398 (object 0x00000007058d89a0, a java.lang.Object),
>   which is held by "Thread-0"
> 
> Java stack information for the threads listed above:
> ===================================================
> "Thread-0":
>  at java.io.PrintStream.flush(PrintStream.java:337)
>  - waiting to lock <0x00000007059573f0> (a org.openjdk.jmh.runner.link.BinaryLinkClient$ForwardingPrintStream)
>  at org.openjdk.jmh.util.FileUtils.safelyClose(FileUtils.java:202)
>  at org.openjdk.jmh.runner.link.BinaryLinkClient.close(BinaryLinkClient.java:77)
>  - locked <0x00000007058d89a0> (a java.lang.Object)
>  at org.openjdk.jmh.runner.ForkedMain$1.run(ForkedMain.java:103)
> "Thread-5":
>  at org.openjdk.jmh.runner.link.BinaryLinkClient.pushFrame(BinaryLinkClient.java:69)
>  - waiting to lock <0x00000007058d89a0> (a java.lang.Object)
>  at org.openjdk.jmh.runner.link.BinaryLinkClient.access$000(BinaryLinkClient.java:48)
>  at org.openjdk.jmh.runner.link.BinaryLinkClient$ForwardingPrintStream$1.write(BinaryLinkClient.java:156)
>  at java.io.PrintStream.write(PrintStream.java:480)
>  - locked <0x00000007059573f0> (a org.openjdk.jmh.runner.link.BinaryLinkClient$ForwardingPrintStream)
>  at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
>  at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)

Thanks, this is enough to dissect the issue. Fixed:
  http://hg.openjdk.java.net/code-tools/jmh/rev/f90aef7f1d2c

Can you run the patched version on your workload again?

-Aleksey.



More information about the jmh-dev mailing list