Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8083043 | emb-9 | Igor Veresov | P2 | Resolved | Fixed | b34 |
JDK-8063319 | 8u45 | Igor Veresov | P2 | Resolved | Fixed | b01 |
JDK-8059096 | 8u40 | Igor Veresov | P2 | Closed | Fixed | b08 |
JDK-8071055 | emb-8u47 | Igor Veresov | P2 | Resolved | Fixed | team |
http://cs.oswego.edu/pipermail/concurrency-interest/2014-September/012953.html
Date: Thu, 18 Sep 2014 12:38:59 +0200
From: Gaëlle Guimezanes <ggu@quartetfs.com>
To: concurrency-interest@cs.oswego.edu
[...]
I have a strange behaviour using Unsafe in Java 1.8.0_20.
When I use getByte/putByte to manipulate bits, my JVM crashes (access
violation).
But when I use getLong/putLong for the same purpose it works correctly
(even though I have allocated exactly the same amount of memory).
Also, when using Java 1.7.0_67 to compile and run the same source code,
both the getByte/putByte and the getLong/putLong approaches work correctly.
I have attached a simple test class (DirectMemoryCrash.java) for
reproducing the problem: you can run it with no argument for
the getByte/putByte version, or with "useLongs" arguments for
the getLong/putLong version.
[...]
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fec9130336a, pid=228310, tid=140654375552768
#
# JRE version: OpenJDK Runtime Environment (9.0) (build 1.9.0-internal-debug-vlivanov_2014_09_18_07_56-b00)
# Java VM: OpenJDK 64-Bit Server VM (1.9.0-internal-debug-vlivanov_2014_09_18_07_56-b00 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 270% C1 DirectMemoryCrash.alternateBitsUsingBytes(I)V (181 bytes) @ 0x00007fec9130336a [0x00007fec91302d00+0x66a]
#
ILW = HLH = P2
I = H = crash w/ product binaries
L = L = problematic code shape involves Unsafe usage
W = H = no workaround is known
Date: Thu, 18 Sep 2014 12:38:59 +0200
From: Gaëlle Guimezanes <ggu@quartetfs.com>
To: concurrency-interest@cs.oswego.edu
[...]
I have a strange behaviour using Unsafe in Java 1.8.0_20.
When I use getByte/putByte to manipulate bits, my JVM crashes (access
violation).
But when I use getLong/putLong for the same purpose it works correctly
(even though I have allocated exactly the same amount of memory).
Also, when using Java 1.7.0_67 to compile and run the same source code,
both the getByte/putByte and the getLong/putLong approaches work correctly.
I have attached a simple test class (DirectMemoryCrash.java) for
reproducing the problem: you can run it with no argument for
the getByte/putByte version, or with "useLongs" arguments for
the getLong/putLong version.
[...]
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fec9130336a, pid=228310, tid=140654375552768
#
# JRE version: OpenJDK Runtime Environment (9.0) (build 1.9.0-internal-debug-vlivanov_2014_09_18_07_56-b00)
# Java VM: OpenJDK 64-Bit Server VM (1.9.0-internal-debug-vlivanov_2014_09_18_07_56-b00 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 270% C1 DirectMemoryCrash.alternateBitsUsingBytes(I)V (181 bytes) @ 0x00007fec9130336a [0x00007fec91302d00+0x66a]
#
ILW = HLH = P2
I = H = crash w/ product binaries
L = L = problematic code shape involves Unsafe usage
W = H = no workaround is known
- backported by
-
JDK-8063319 Crash in C1 OSRed method w/ Unsafe usage
-
- Resolved
-
-
JDK-8071055 Crash in C1 OSRed method w/ Unsafe usage
-
- Resolved
-
-
JDK-8083043 Crash in C1 OSRed method w/ Unsafe usage
-
- Resolved
-
-
JDK-8059096 Crash in C1 OSRed method w/ Unsafe usage
-
- Closed
-
- relates to
-
JDK-8059621 JVM crashes with "unexpected index type" assert in LIRGenerator::do_UnsafeGetRaw
-
- Resolved
-
-
JDK-8059002 8058744 needs a test case
-
- Resolved
-
(1 relates to)