-
Bug
-
Resolution: Fixed
-
P1
-
7u45, 8, 9
-
b42
-
generic
-
generic
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8083240 | emb-9 | Coleen Phillimore | P1 | Resolved | Fixed | team |
JDK-8067528 | 8u45 | Coleen Phillimore | P1 | Resolved | Fixed | b01 |
JDK-8042592 | 8u40 | Coleen Phillimore | P1 | Closed | Fixed | b18 |
JDK-8070916 | emb-8u47 | Coleen Phillimore | P1 | Resolved | Fixed | team |
JDK-8072235 | 7u85 | Kevin Walls | P1 | Resolved | Fixed | b01 |
JDK-8042593 | 7u80 | Kevin Walls | P1 | Closed | Fixed | b05 |
// fooMH2 displaces fooMH1 from the MemberNamesTable
MethodHandle fooMH1 = lookup.unreflect(fooMethod);
MethodHandle fooMH2 = lookup.unreflect(fooMethod);
// Redefining Foo.getName() causes vmtarget to be updated
// in fooMH2 but not fooMH1
redefineFoo();
// Full GC causes fooMH1.vmtarget to be deallocated
System.gc();
// Calling fooMH1.vmtarget crashes the VM
System.out.println("fooMH1.invoke = " + fooMH1.invokeExact());
The problem is that MemberNameTable only stores the last created MemberName for a given method.
$ java RedefineMethodUsedByMultipleMethodHandles
fooMH1.invoke = foo
fooMH2.invoke = foo
objc[11873]: Class JavaLaunchHelper is implemented in both /Users/cthaling/build/jdk9/hs-comp/hotspot/jdk-universal/bin/java and /Users/cthaling/build/jdk9/hs-comp/hotspot/jdk-universal/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
redefining class RedefineMethodUsedByMultipleMethodHandles$Foo
replacing "foo" with "bar"
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000000000000, pid=11873, tid=6147
#
# JRE version: Java(TM) SE Runtime Environment (9.0-b04) (build 1.9.0-ea-b04)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.0-b62-internal-debug mixed mode bsd-amd64 compressed oops)
# Problematic frame:
#
[error occurred during error reporting (printing problematic frame), id 0xe0000000]
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/cthaling/Downloads/hs_err_pid11873.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
Current thread is 6147
Dumping core ...
Abort trap: 6
- backported by
-
JDK-8067528 redefining method used by multiple MethodHandles crashes VM
-
- Resolved
-
-
JDK-8070916 redefining method used by multiple MethodHandles crashes VM
-
- Resolved
-
-
JDK-8072235 redefining method used by multiple MethodHandles crashes VM
-
- Resolved
-
-
JDK-8083240 redefining method used by multiple MethodHandles crashes VM
-
- Resolved
-
-
JDK-8042592 redefining method used by multiple MethodHandles crashes VM
-
- Closed
-
-
JDK-8042593 redefining method used by multiple MethodHandles crashes VM
-
- Closed
-
- duplicates
-
JDK-8013267 move MemberNameTable from native code to Java heap, use to intern MemberNames
-
- Open
-
- relates to
-
JDK-8027162 JSR292: implement MemberName interning
-
- Closed
-
-
JDK-8013267 move MemberNameTable from native code to Java heap, use to intern MemberNames
-
- Open
-
-
JDK-8008511 JSR 292: MemberName vmtarget refs to methods must be updated at class redefinition
-
- Resolved
-
-
JDK-8133612 new clone logic added in 8042235 is missing from compiler intrinsics
-
- Resolved
-