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

Andreas Eriksson andreas.eriksson at oracle.com
Mon Jun 8 16:53:22 UTC 2015


Hi Coleen, thanks for looking at this.

That might work, I'll make a build to test it.

Just FYI:
My first attempt to fix this was actually to delete the resolution 
errors from ConstantPool::deallocate_contents, but that was sometimes 
called when not at safepoint, which made me do this change instead.

Regards,
Andreas


On 2015-06-06 00:07, Coleen Phillimore wrote:
>
> 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