RFR(s): 8055239: assert(_thread == Thread::current()->osthread()) failed: The PromotionFailedInfo should be thread local.
sangheon.kim at oracle.com
Fri Nov 21 05:35:01 UTC 2014
Please review this change to reset PromotionFailedInfo before use:
This issue happens only with ParallelRefProcEnabled.
And this assert happens as the current thread (when second promotion
failure happened) is different from saved thread (when first promotion
From ParNewGeneration::collect(), there are two mt processing, for live
object processing (by ParNewGenTask) and reference processing (by
ParNewRefEnqueueTaskProxy). When first promotion failure happened from
ParNewGenTask, thread pointer will be stored by
PromotionFailedInfo::register_copy_failure(). And at second failure,
assert happens as thread pointer is not guaranteed to be same.
As the thread counts increase, its frequency become higher.
Added ParScanThreadStateSet::trace_promotion_failed() to trace and reset
promotion failure information instance.
More information about the hotspot-gc-dev