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

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Mon Jun 8 23:49:45 UTC 2015


Hi Andreas,

I agree, it is a good idea to delete the resolution errors from 
ConstantPool::deallocate_contents.
So, I'm waiting for next webrev.

Thanks,
Serguei

On 6/8/15 9:53 AM, Andreas Eriksson wrote:
> 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