<div dir="ltr">Hi all,<div><br></div><div>While I was testing my app using java 8, I encountered the previously reported sun.misc.Unsafe issue. </div><div><br></div><div><a href="https://bugs.openjdk.java.net/browse/JDK-8076445">https://bugs.openjdk.java.net/browse/JDK-8076445</a><br></div><div><a href="http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017685.html">http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017685.html</a><br></div><div><br></div><div>Issue status says it's resolved with resolution "<span style="color:rgb(0,0,0);font-family:sans-serif;font-size:13px;line-height:17.0000991821289px">Cannot Reproduce</span>".  But unfortunately it's still reproducible using "1.8.0_60-ea-b18" and "1.9.0-ea-b67". </div><div><br></div><div>Test is very simple:</div><div><br></div><div>```</div><div><div>public static void main(String[] args) throws Exception {</div><div>        Unsafe unsafe = findUnsafe();</div><div>        // 10000 pass</div><div>        // 100000 jvm crash</div><div>        // 1000000 fail</div><div>        int count = 100000;</div><div>        long size = count * 8L;</div><div>        long baseAddress = unsafe.allocateMemory(size);</div><div><br></div><div>        try {</div><div>            for (int i = 0; i < count; i++) {</div><div>                long address = baseAddress + (i * 8L);</div><div><br></div><div>                long expected = i;</div><div>                unsafe.putLong(address, expected);</div><div><br></div><div>                long actual = unsafe.getLong(address);</div><div><br></div><div>                if (expected != actual) {</div><div>                    throw new AssertionError("Expected: " + expected + ", Actual: " + actual);</div><div>                }</div><div>            }</div><div>        } finally {</div><div>            unsafe.freeMemory(baseAddress);</div><div>        }</div><div>    }</div></div><div>```</div><div>It's not failing up to version 1.8.0.31, by starting 1.8.0.40 test is failing constantly. </div><div><br></div><div>- With iteration count 10000, test is passing. </div><div>- With iteration count 100000, jvm is crashing with SIGSEGV.</div><div>- With iteration count 1000000, test is failing with AssertionError. </div><div><br></div><div>When one of compilation (-Xint) or inlining (-XX:-Inline) or on-stack-replacement (-XX:-UseOnStackReplacement) is disabled, test is not failing at all. </div><div><br></div><div>I tested on platforms: </div><div>- Centos-7/openjdk-1.8.0.45</div><div>- OSX/oraclejdk-1.8.0.40</div><div>- OSX/oraclejdk-1.8.0.45<br></div><div>- OSX/oraclejdk-1.8.0_60-ea-b18<br></div><div>- OSX/oraclejdk-1.9.0-ea-b67<br></div><div><br></div><div>Previous issue comment (<a href="https://bugs.openjdk.java.net/browse/JDK-8076445?focusedCommentId=13633043#comment-13633043">https://bugs.openjdk.java.net/browse/JDK-8076445?focusedCommentId=13633043#comment-13633043</a>) says "<span style="color:rgb(0,0,0);font-family:sans-serif;font-size:13px;line-height:17.0000991821289px;background-color:rgb(224,240,255)">Cannot reproduce based on the latest version".</span> I hope that latest version is not mentioning to '1.8.0_60-ea-b18' or '1.9.0-ea-b67'. Because both are failing.</div><div> </div><div>I'm looking forward to hearing from you.</div><div><br></div><div>Thanks,</div><div>-Mehmet Dogan-</div></div><div dir="ltr">-- <br></div><div dir="ltr"><p dir="ltr">@mmdogan</p>
</div>