RFR(s): 8055239: assert(_thread == Thread::current()->osthread()) failed: The PromotionFailedInfo should be thread local.
Sangheon Kim
sangheon.kim at oracle.com
Fri Nov 21 05:35:01 UTC 2014
Hi all,
Please review this change to reset PromotionFailedInfo before use:
https://bugs.openjdk.java.net/browse/JDK-8055239
Webrev:
http://cr.openjdk.java.net/~sangheki/8055239/webrev.00/
Summary:
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
failure happened).
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.
Fix:
Added ParScanThreadStateSet::trace_promotion_failed() to trace and reset
promotion failure information instance.
Test:
- jprt
Thanks,
Sangheon
More information about the hotspot-gc-dev
mailing list