RFR (M) 8010927: Kitchensink crashed with SIGSEGV, Problematic frame: v ~StubRoutines::checkcast_arraycopy

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon May 20 15:08:52 PDT 2013


On 5/20/13 2:36 PM, Vladimir Kozlov wrote:
> http://cr.openjdk.java.net/~kvn/8010927/webrev
>
> The post-barrier code for arraycopy stubs on x64 was different from the
> code on other platforms and it had bug which cause marking one more card
> than needed. And it causes SEGV if cardtable has hole (uncommitted
> space) due to unused heap space in young gen (NewSize > MaxNewSize).

Sorry, it was typo (NewSize < MaxNewSize). Also the difference should be 
 > (512*4Kb) to map to one (or more) uncommitted (4Kb) pages in 
cardtable space.

Vladimir

>
> Changed gen_write_ref_array_post_barrier() code on x64 to pass start
> address and number of copied oop elements as on others platforms.
>
> Added check in generate_checkcast_copy() to skip post barrier code if no
> elements are copied (when type check failed for first element).
> Note that on sparc this code has already such check.
>
> Added regression test based on initial version from Mikael Gerdin.
> Tested changes with this test on all platforms using JPRT. Ran jtreg tests.
>
> Thanks,
> Vladimir


More information about the hotspot-compiler-dev mailing list