Array accesses using sun.misc.Unsafe cause data corruption or SIGSEGV (original) (raw)

Mehmet Dogan mehmet at hazelcast.com
Tue Jun 9 10:07:22 UTC 2015


Hi all,

While I was testing my app using java 8, I encountered the previously reported sun.misc.Unsafe issue.

https://bugs.openjdk.java.net/browse/JDK-8076445 http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017685.html

Issue status says it's resolved with resolution "Cannot Reproduce". But unfortunately it's still reproducible using "1.8.0_60-ea-b18" and "1.9.0-ea-b67".

Test is very simple:

public static void main(String[] args) throws Exception {
        Unsafe unsafe = findUnsafe();
        // 10000 pass
        // 100000 jvm crash
        // 1000000 fail
        int count = 100000;
        long size = count * 8L;
        long baseAddress = unsafe.allocateMemory(size);

        try {
            for (int i = 0; i < count; i++) {
                long address = baseAddress + (i * 8L);

                long expected = i;
                unsafe.putLong(address, expected);

                long actual = unsafe.getLong(address);

                if (expected != actual) {
                    throw new AssertionError("Expected: " + expected + ",
Actual: " + actual);
                }
            }
        } finally {
            unsafe.freeMemory(baseAddress);
        }
    }

It's not failing up to version 1.8.0.31, by starting 1.8.0.40 test is failing constantly.

When one of compilation (-Xint) or inlining (-XX:-Inline) or on-stack-replacement (-XX:-UseOnStackReplacement) is disabled, test is not failing at all.

I tested on platforms:

Previous issue comment ( https://bugs.openjdk.java.net/browse/JDK-8076445?focusedCommentId=13633043#comment-13633043) says "Cannot reproduce based on the latest version". 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.

I'm looking forward to hearing from you.

Thanks, -Mehmet Dogan-

@mmdogan -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150609/7ce4e16e/attachment.html>



More information about the hotspot-compiler-dev mailing list