RFC (S): Purge ShenandoahVerifyWritesToFromSpace
Roman Kennke
rkennke at redhat.com
Thu Apr 20 20:31:28 UTC 2017
Am 20.04.2017 um 21:23 schrieb Aleksey Shipilev:
> Hi,
>
> My attempts to salvage VerifyWrites were unsuccessful. The problematic part is
> fwdptr stores, that are legal in from-space. I don't see a good way to accept
> those writes only.
>
> a) Intercepting SEGV in handler and figuring out it was legit is hard, but the
> hardest part is calling mprotect from signal handler (seems like POSIX is
> frowning upon this), and reestablishing mprotect on exit.
>
> b) Wrapping fwdptr writes in memProtect{Off,On} is only easy to do with native
> code, but not when our write barriers are spelled in IR. I shudder at the
> thought to introduce runtime calls in C2 WB, for example.
>
> c) Middle ground: memprotecting regions as we finish evacuating them runs into
> the interesting trouble with x86. There, locked CAS always produces the store.
> And we use that fwdptr CAS to resolve the conflict in concurrent copy. So, even
> if GC finishes with region and memprotects it, the mutator would still blow up
> on PROT_NONE. We can alleviate this by doing test before CAS, but that only
> shortens the race window, and does not eliminate it completely. Not to mention
> the issues for introducing another branch in WBs.
>
> For the record, this is my last attempt:
> http://cr.openjdk.java.net/~shade/shenandoah/purge-verifywrites/shenandoah-memprotect-write.patch
>
> At this point, I believe VerifyWrites in unsalvageable, and should be purged:
> http://cr.openjdk.java.net/~shade/shenandoah/purge-verifywrites/webrev/
>
> Testing: hotspot_gc_shenandoah
Ok.
Roman
More information about the shenandoah-dev
mailing list