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

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon May 20 14:36:15 PDT 2013


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).

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