Benchmark crashes on Java 8 EA

Aleksey Shipilev aleksey.shipilev at oracle.com
Wed Feb 26 11:32:27 PST 2014


On 02/26/2014 10:43 PM, Aleksey Shipilev wrote:
> On 02/26/2014 10:30 PM, Daniel Mitterdorfer wrote:
>> May I jump in? I haven't used Chris' object-pool-benchmarks project
>> before but I've tried it now out of keen interest and can confirm the
>> described behavior. Steps to reproduce on my machine:
> 
> Got it reproduced, thanks. Let's see...

This is a genuine JVM crash (segfault). I pinpointed this to forcing the
inlining of "objectpoolbenchmark/suite/ClaimRelease.claimRelease". This
explains why non-forked VMs are working fine: @CompilerControl is not
passed there.

I have a suspicion this is somehow related to ClaimRelease.claimRelease
being the recursive method, will follow up on that with VM guys.
Meanwhile, it the workaround seems to be:

diff --git a/src/main/java/objectpoolbenchmark/suite/ClaimRelease.java
b/src/main/java/objectpoolbenchmark/suite/ClaimRelease.java
index df9deb6..6854be8 100644
--- a/src/main/java/objectpoolbenchmark/suite/ClaimRelease.java
+++ b/src/main/java/objectpoolbenchmark/suite/ClaimRelease.java
@@ -59,7 +59,7 @@ public abstract class ClaimRelease
     claimRelease(claimsLeft);
   }

-  @CompilerControl(CompilerControl.Mode.INLINE)
+//  @CompilerControl(CompilerControl.Mode.INLINE)
   private void claimRelease(int claimsLeft) throws Exception {
     if (claimsLeft == 0) {
       return;

Thanks,
-Aleksey.


More information about the jmh-dev mailing list