Request for reviews (L): 6840775: Multiple JVM crashes seen with 1.6.0_10 through early access of 1.6.0_14
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Fri Jun 26 15:53:24 PDT 2009
Thank you, Tom
Tom Rodriguez wrote:
> The change in slow_arraycopy_C seems like overkill but wouldn't a
> No_Safepoint_Verifier be more appropriate?
Replaced my code with debug_only(No_Safepoint_Verifier nsv;).
>
> Could you refactor the copy code so that there aren't two copies of the
> code? They do almost exactly the same thing apart from a few checks.
> It's hard to see the overall structure with those big chunks in the
> middle as well. The code itself looks good to me.
Agree, I will do it.
Thanks,
Vladimir
>
> tom
>
> On Jun 23, 2009, at 4:46 PM, Vladimir Kozlov wrote:
>
>>
>> http://cr.openjdk.java.net/~kvn/6840775/webrev.01
>>
>> Fixed 6840775: Multiple JVM crashes seen with 1.6.0_10 through early
>> access of 1.6.0_14
>>
>> Problem:
>> There is no live oop value (only raw) across the call
>> to slow_arraycopy() corresponding to new array allocation
>> followed by arraycopy. The original CheckCastPP
>> is moved after the call and the new CheckCastPP lives
>> only until the call. As result the reference to allocated array
>> in copyOf() intrinsic is not put into OopMap and we get
>> wrong reference after the call when GC happens on the exit
>> from the call to slow_arraycopy().
>>
>> Solution:
>> Replace raw memory edge in the original CheckCastPP with
>> new CheckCastPP to have a live oop across safepoints.
>> Also:
>> - don't disconnect the original InitializeNode;
>> - use a secondary InitializeNode as raw memory barrier
>> only on zero copy length path since other paths have
>> stub or runtime calls as raw memory barriers;
>> - remove incorrect stack restore in generate_slow_arraycopy;
>> - separate code for arrays and instances in inline_native_clone;
>> - add assert in SharedRuntime::slow_arraycopy_C() to verify that
>> no GC happened during copy_array() call;
>> - add assert to check for possible live raw values at safepoint
>> which are oops (there are CheckCastPP for the raw value);
>> - fix SA to display an object with bad oop fields;
>> - fix typo in optimized.make.
>>
>> Reviewed by:
>>
>> Fix verified (y/n): y, bug's test
>>
>> Other testing:
>> JPRT, CTW
>>
>
More information about the hotspot-compiler-dev
mailing list