RFR: 8372566: Genshen: crash at ShenandoahScanRemembered::process_clusters after JDK-8371667

Xiaolong Peng xpeng at openjdk.org
Mon Dec 1 16:44:27 UTC 2025


On Thu, 27 Nov 2025 03:10:18 GMT, Xiaolong Peng <xpeng at openjdk.org> wrote:

> For non-plab allocs in old gen, the objects need to be registered in card table, which was missed in the [PR](https://git.openjdk.org/jdk/pull/28247) for JDK-8371667. The bug didn't cause jtreg test failures in GHA and my local test, but when I ran specjbb benchmarks, it did cause crash at ShenandoahScanRemembered::process_clusters when GC scans remembered set. 
> 
> The bug may cause other issue since the object in old gen is not properly registered, e.g. marking phase have wrong result.
> 
> Tests:
> - [x]  specjbb, no crash
> - [x] hotspot_gc_shenandoah

> Given that #28247 significantly changed the encoding of the request `type` here, and we already missed an incorrect usage in one spot, I think we should use the member function to test for a shared/lab allocation. Can we also check if there are other uses of `type()` that may not be safe now?

I did briefly check all the places where `type()` is called, it should be good now, there are two more places we could improve but won't causes bug, I initially added them in the PR and decided to revert them since they are not related to this bug fix.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/28521#issuecomment-3597622168


More information about the shenandoah-dev mailing list