Request for reviews (L): 6840775: Multiple JVM crashes seen with 1.6.0_10 through early access of 1.6.0_14

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Fri Jun 26 13:29:28 PDT 2009


The change in slow_arraycopy_C seems like overkill but wouldn't a  
No_Safepoint_Verifier be more appropriate?

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.

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