RFR: Workaround possible ResolvedMethodTable bug
Roman Kennke
rkennke at redhat.com
Wed Jul 12 18:32:21 UTC 2017
Hmmhmm, OK. But we need to understand and fix this soon.
The gotcha is that 'weak' doesn't always mean the same ;-)
Roman
Am 12. Juli 2017 20:25:29 MESZ schrieb Aleksey Shipilev <shade at redhat.com>:
>I *think* there is a bug within a new ResolvedMethodTable machinery,
>coming from
>here:
> http://hg.openjdk.java.net/jdk10/hs/hotspot/rev/da4c9eef4316
>
>The oops in that table are now weakly reachable, achieved by:
>
>void SystemDictionary::roots_oops_do(OopClosure* strong, OopClosure*
>weak) {
> ...
> if (weak != NULL) {
> ResolvedMethodTable::oops_do(weak);
> }
>}
>
>But here is a problem: Shenandoah init mark is passing (weak == NULL)
>if
>reference processing is enabled:
>
> _rp->process_strong_roots(&mark_cl,
> _process_refs ? NULL : &mark_cl, // <--- here
> &cldCl, &blobsCl, worker_id);
>
>I think "normal" weak references get processed fine, because they will
>get
>registered with ReferenceProcessor, and will get marked if actually
>reachable.
>But not ResolvedMethodNames now! Which makes Verifier barf like this:
>http://cr.openjdk.java.net/~shade/shenandoah/rmt-weak-bug/hs_err_pid25252.log
>
>Notice that ResolvedMethodName is not marked.
>
>Let us work that around for now, until we figure out more:
> http://cr.openjdk.java.net/~shade/shenandoah/rmt-weak-bug/webrev.01/
>
>This fix makes jcstress pass longer with Shenandoah verification
>enabled.
>
>Thanks,
>-Aleksey
--
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
More information about the shenandoah-dev
mailing list