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

Coleen Phillimore coleen.phillimore at oracle.com
Fri Jun 5 22:07:31 UTC 2015


Thank you so much for fixing this, Andreas!

I was wondering if you could delete the resolution errors in 
InstanceKlass::deallocate_contents instead at the point where you free 
the constant pool?   This code is at a safepoint at this time, even with 
the CMS collector.

Thanks,
Coleen

On 6/4/15 5:23 PM, serguei.spitsyn at oracle.com wrote:
> Added the SVC list as it impacts the Serviceability as well.
>
> Thanks,
> Serguei
>
> On 6/4/15 4:56 AM, Andreas Eriksson wrote:
>> 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