RFR(8u): 8038636, 8055008, 8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links ...and 8057570.

Kevin Walls kevin.walls at oracle.com
Mon Nov 13 18:08:27 UTC 2017


Hi,

I'd like to get a hotspot review of these backports from 9 to 8u.  This 
is mainly runtime territory but some of the history is from the compiler 
side.

webrev: http://cr.openjdk.java.net/~kevinw/8055008.8156137/webrev.00/

The one we need is:

8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links
jbs: https://bugs.openjdk.java.net/browse/JDK-8156137
9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/882e8cda60b3

The 9 changeset is short, just changing klass.cpp, but not possible in 8 
without additional work, so...

1.

8038636: speculative traps break when classes are redefined
https://bugs.openjdk.java.net/browse/JDK-8038636

9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/a7784ddacbef

9 review thread: 
http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2014-April/013948.html 
(in 9 since April 2014)

That one imports cleanly into 8u.


2.

With that imported, we need:

8055008:Clean up code that saves the previous versions of redefined classes
https://bugs.openjdk.java.net/browse/JDK-8055008

9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/e3fb51ae8d7d

This is the change to stop using PreviousVersionNode and get an 
InstanceKlass* from previous_versions().


My webrev: http://cr.openjdk.java.net/~kevinw/8055008.8156137/webrev.00/

...is 8055008 and 8156137 in 8u. The klass.cpp change here is 8156137.  
The rest is 8055008, so I can commit them separately.

8156137 doesn't have its own test, but I have found if you get this area 
wrong, the test runtime/RedefineObject crashes.


Notes:
For 8055008 there was a change in 
src/share/vm/classfile/classLoaderData.cpp which is already in 8u.

src/share/vm/classfile/metadataOnStackMark.cpp:
+MetadataOnStackMark::MetadataOnStackMark(bool has_redefined_a_class) {

The change is to stop using JvmtiExport::has_redefined_a_class() here 
which is already in 8u at this point, but the param is already there 
with a different name, so renamed as per 8055008.

universe.cpp: had a change in 8055008 but following that there was:

8057570: RedefineClasses() tests fail 
assert(((Metadata*)obj)->is_valid()) failed: obj is valid
https://bugs.openjdk.java.net/browse/JDK-8057570
9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/479ed4234a9d

..this puts back a few lines in nmethod.cpp which 8055008 removed:

+ // Call function Method*, not embedded in these other places.
+ if (_method != NULL) f(_method);

..and in universe.cpp:

+ // Make the dependent methods not entrant (in VM_Deoptimize they are 
made zombies)
+ CodeCache::make_marked_nmethods_not_entrant();

..and removes: CodeCache::make_marked_nmethods_zombies();

My webrev takes these into account.


Then there are 8038636's two follow-on bugs which I'd like to follow-up 
in a separate thread.
8039960 is a test change
8040237: nsk/jvmti/RetransformClasses/retransform001 crashed the VM on 
all platforms when run with with -server -Xcomp
https://bugs.openjdk.java.net/browse/JDK-8040237


Thanks!
Kevin



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20171113/2f88b230/attachment-0001.html>


More information about the hotspot-compiler-dev mailing list