8076110: VM crash when class is redefined with Instrumentation.redefineClasses

Andreas Eriksson andreas.eriksson at oracle.com
Thu Jun 4 11:56:31 UTC 2015


Hi,

Please review this fix of a crash because of a class redefinition race.

Bug: https://bugs.openjdk.java.net/browse/JDK-8076110
Webrev: http://cr.openjdk.java.net/~aeriksso/8076110/webrev.00/

The crash happens when the redefine occurs while the redefined method is 
still running.
This is because VM_RedefineClasses::redefine_single_class deletes the 
resolution errors at redefine time, but the running method might still 
need them.

This is fixed by moving the deletion of the cached resolution errors to 
when the {add,purge}_previous_version functions have come to the 
conclusion that no running methods need the old class any more (and 
therefore no one needs the constant pool and its associated resolution 
errors either).

A jtreg regression test that reproduces the problem using 
redefineclasses and objectweb.asm is included in the change.

Thanks,
Andreas


More information about the hotspot-runtime-dev mailing list