RFR (M) 8010927: Kitchensink crashed with SIGSEGV, Problematic frame: v ~StubRoutines::checkcast_arraycopy
vladimir.kozlov at oracle.com
Mon May 20 15:08:52 PDT 2013
On 5/20/13 2:36 PM, Vladimir Kozlov wrote:
> 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
> 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.
More information about the hotspot-compiler-dev