RFR: Check oop before pushing on Traversal queue
Roman Kennke
rkennke at redhat.com
Fri Aug 31 14:56:12 UTC 2018
Ok
Am 31. August 2018 13:33:56 MESZ schrieb Aleksey Shipilev <shade at redhat.com>:
>sh/jdk is still broken. We have weird asserts that oops *polled* from
>the marking queue are in
>collection set. Normal concurrent cycle asserts this *before* putting
>on the queue as well.
>Traversal should do it too, and this would capture the interior_loc
>from where this oop was read.
>
>diff -r 68c38ace31e8
>src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp
>--- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp
>Fri Aug 31 12:53:46 2018 +0200
>+++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp
>Fri Aug 31 13:25:24 2018 +0200
>@@ -74,10 +74,13 @@
> if (src != NULL) {
> _matrix->set_connected(src, obj);
> }
> }
>
>+ shenandoah_assert_not_forwarded(p, obj);
>+ shenandoah_assert_not_in_cset_except(p, obj,
>_heap->cancelled_gc());
>+
> if (mark_context->mark(obj)) {
> bool succeeded = queue->push(ShenandoahMarkTask(obj));
> assert(succeeded, "must succeed to push to task queue");
>
>if (STRING_DEDUP && ShenandoahStringDedup::is_candidate(obj) &&
>!_heap->cancelled_gc()) {
>
>Testing: tier3_gc_shenandoah (no new failures)
>
>-Aleksey
More information about the shenandoah-dev
mailing list