bug in hashCode() for values?

Roland Westrelin rwestrel at redhat.com
Fri Jun 22 10:05:20 UTC 2018


With this patch applied:

http://cr.openjdk.java.net/~roland/8205340/webrev.00/

compiler/valhalla/valuetypes/TestIntrinsics.java fails with:

#  SIGSEGV (0xb) at pc=0x00007f6505fd8462, pid=16347, tid=16348
#
# JRE version: OpenJDK Runtime Environment (11.0) (slowdebug build 11-internal+0-adhoc.roland.valhalla)
# Java VM: OpenJDK 64-Bit Server VM (slowdebug 11-internal+0-adhoc.roland.valhalla, mixed mode, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x31f462]  oopDesc::klass() const+0x1e

and that crash triggers with -Xint. The crash occurs in Unsafe_GetObject
with stack trace:

1 - frame( sp=0x00007f8cf9946530, unextended_sp=0x00007f8cf9946530, fp=0x00007f8cf99465a0, pc=0x00007f8ce4c4685e)
jdk.internal.misc.Unsafe.getObject(Native Method)
 2 - frame( sp=0x00007f8cf99465b0, unextended_sp=0x00007f8cf99465c0, fp=0x00007f8cf9946630, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$MH/0x00000008000b0840.invoke
 3 - frame( sp=0x00007f8cf9946640, unextended_sp=0x00007f8cf9946668, fp=0x00007f8cf99466c8, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$MH/0x00000008000cdc40.invoke
 4 - frame( sp=0x00007f8cf99466d8, unextended_sp=0x00007f8cf99466f0, fp=0x00007f8cf9946750, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$MH/0x00000008000cb440.invoke_MT
 5 - frame( sp=0x00007f8cf9946760, unextended_sp=0x00007f8cf9946768, fp=0x00007f8cf99467e0, pc=0x00007f8ce4c38300)
java.lang.invoke.ValueBootstrapMethods$ValueBsmFactory.getFieldValue(ValueBootstrapMethods.java:186)
 6 - frame( sp=0x00007f8cf99467f0, unextended_sp=0x00007f8cf99467e8, fp=0x00007f8cf9946860, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$DMH/0x00000008000a4840.invokeStatic
 7 - frame( sp=0x00007f8cf9946870, unextended_sp=0x00007f8cf9946878, fp=0x00007f8cf99468f0, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$MH/0x00000008000b3440.invoke
 8 - frame( sp=0x00007f8cf9946900, unextended_sp=0x00007f8cf9946910, fp=0x00007f8cf9946988, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$MH/0x00000008000c9c40.invoke
 9 - frame( sp=0x00007f8cf9946998, unextended_sp=0x00007f8cf99469e8, fp=0x00007f8cf9946a48, pc=0x00007f8ce4c38300)
java.lang.invoke.LambdaForm$MH/0x00000008000cb440.invoke_MT
10 - frame( sp=0x00007f8cf9946a58, unextended_sp=0x00007f8cf9946a60, fp=0x00007f8cf9946ac8, pc=0x00007f8ce4c38300)
java.lang.invoke.ValueBootstrapMethods.invoke(ValueBootstrapMethods.java:262)
11 - frame( sp=0x00007f8cf9946ad8, unextended_sp=0x00007f8cf9946ae0, fp=0x00007f8cf9946b40, pc=0x00007f8ce4c38300)
java.lang.invoke.ValueBootstrapMethods.valueHashCode(ValueBootstrapMethods.java:224)
12 - frame( sp=0x00007f8cf9946b50, unextended_sp=0x00007f8cf9946b58, fp=0x00007f8cf9946bb8, pc=0x00007f8ce4c37fc0)
java.lang.invoke.ValueBootstrapMethods.hashCode(ValueBootstrapMethods.java:204)
13 - frame( sp=0x00007f8cf9946bc8, unextended_sp=0x00007f8cf9946bc0, fp=0x00007f8cf9946c28, pc=0x00007f8ce4c37fc0)
java.lang.invoke.LambdaForm$DMH/0x00000008000c1840.invokeStatic
14 - frame( sp=0x00007f8cf9946c38, unextended_sp=0x00007f8cf9946c40, fp=0x00007f8cf9946ca8, pc=0x00007f8ce4c37fc0)
java.lang.invoke.LambdaForm$MH/0x00000008000ca840.invoke
15 - frame( sp=0x00007f8cf9946cb8, unextended_sp=0x00007f8cf9946cc8, fp=0x00007f8cf9946d28, pc=0x00007f8ce4c37fc0)
java.lang.invoke.LambdaForm$MH/0x00000008000cb040.linkToTargetMethod
16 - frame( sp=0x00007f8cf9946d38, unextended_sp=0x00007f8cf9946d38, fp=0x00007f8cf9946d98, pc=0x00007f8ce4c3804a)
compiler.valhalla.valuetypes.MyValue1.hashCode(MyValue1.java:26)
17 - frame( sp=0x00007f8cf9946da8, unextended_sp=0x00007f8cf9946da8, fp=0x00007f8cf9946e00, pc=0x00007f8ce4c37fc0)
compiler.valhalla.valuetypes.TestIntrinsics.test6(TestIntrinsics.java:142)

Roland.


More information about the valhalla-dev mailing list