RFR: 8377712: ConstantPool of WeakReferenceKey is not deterministic in CDS archive
Ioi Lam
iklam at openjdk.org
Thu Feb 19 05:27:15 UTC 2026
On Thu, 12 Feb 2026 05:58:15 GMT, Chen Liang <liach at openjdk.org> wrote:
>> We are seeing intermittent failures (12 times in Jan 2026) where the CDS archives generated in the JDK build is not deterministic.
>>
>> The symptom is that (perhaps due to the peculiarity of hash codes and memory addressing??) the constant pool entry for `ReferenceKey<?>` in the `WeakReferenceKey` class is not resolved when the failure happens. Probably it's due to a particular layout in the hashtable such that we have no collisions so the `WeakReferenceKey::equals()` method is never called.
>>
>> The fix is for the JVM to call a method in `WeakReferenceKey` to force this entry to be resolved.
>
> Or a better fix would be removing the == path for all reference keys. There's no case where this hits because you are always creating a new strong key. Missing use of class constant means the equals method is completely unused.
Thank you @liach @vnkozlov for the review
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29678#issuecomment-3924758708
More information about the core-libs-dev
mailing list