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.
For the CDS map file, we can see difference in the TypeArrayU1, which is the constant pool's "tags" array. One of them has CONSTANT_Class and the other has CONSTANT_UnresolvedClass.
@@ -14472,7 +14472,7 @@
0x0000000800067958: @@ TypeArrayU1 8
0x0000000800067958: 0000000000000001 ........
0x0000000800067960: @@ TypeArrayU1 104
-0x0000000800067960: 0c070a000000005c 01010c640a010101 0a0101010c070901 010c0b010701010c \...........d...................
+0x0000000800067960: 0c070a000000005c 01010c640a010101 0a0101010c070901 010c0b016401010c \...........d..............d....
0x0000000800067980: 016401010c0a0a01 0101010c640a0c0a 0c0a0101010c640a 010c640a01080101 ......d....d.....d...........d..
0x00000008000679a0: 01010c0a010c0a01 0101010101010101 0101010101010101 0101010101010101 ................................
0x00000008000679c0: 0000000000000000 ........
@@ -38302,8 +38302,8 @@
0x00000008000fef48: @@ TypeArrayOther 320
0x00000008000fef48: 000000000000000d 00000008001b94f8 0000000000000000 00b7000900030001 ................................
0x00000008000fef68: 0000000000000000 0000000000000000 0000000000000007 0000000000000000 ................................
-0x00000008000fef88: 0000000000000000 0000000000000013 0000000800340430 00000008003401e8 ................0.4.......4.....
-0x00000008000fefa8: 00b9000800010019 0000000000000000 0000000000000006 b60000080001001d ................................
+0x00000008000fef88: 0000000000000000 0000000000000013 0000000000000000 0000000000000000 ................................
+0x00000008000fefa8: 0000000000000019 0000000000000000 0000000000000000 000000000000001d ................................
0x00000008000fefc8: 0000000000000000 0000000000000000 000000000000001e 0000000000000000 ................................
0x00000008000fefe8: 0000000000000000 0000000000000024 0000000000000000 0000000000000000 ........$.......................
0x00000008000ff008: 0000000000000026 0000000000000000 0000000000000000 000000000000002c &.......................,.......
@@ -132542,7 +132542,7 @@
0x0000000800340fd8: 0000000000000000 0000000000000000 00000008000ff088 00000008000fef48 ........................H.......
0x0000000800340ff8: @@ TypeArrayU8 72
0x0000000800340ff8: 0000000000000008 00000008001b8ff0 0000000000000000 0000000800340ce8 ..........................4.....
-0x0000000800341018: 00000008003401e8 0000000000000000 0000000000000000 0000000000000000 ..4.............................
+0x0000000800341018: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ................................
0x0000000800341038: 0000000000000000 ........
0x0000000800341040: @@ Method 88 java.lang.String jdk.internal.util.WeakReferenceKey.toString()
0x0000000800341040: 0000000800010788 0000000800a60038 0000000000000000 0000000000000000 ........8.......................
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.
For the CDS map file, we can see difference in the TypeArrayU1, which is the constant pool's "tags" array. One of them has CONSTANT_Class and the other has CONSTANT_UnresolvedClass.
@@ -14472,7 +14472,7 @@
0x0000000800067958: @@ TypeArrayU1 8
0x0000000800067958: 0000000000000001 ........
0x0000000800067960: @@ TypeArrayU1 104
-0x0000000800067960: 0c070a000000005c 01010c640a010101 0a0101010c070901 010c0b010701010c \...........d...................
+0x0000000800067960: 0c070a000000005c 01010c640a010101 0a0101010c070901 010c0b016401010c \...........d..............d....
0x0000000800067980: 016401010c0a0a01 0101010c640a0c0a 0c0a0101010c640a 010c640a01080101 ......d....d.....d...........d..
0x00000008000679a0: 01010c0a010c0a01 0101010101010101 0101010101010101 0101010101010101 ................................
0x00000008000679c0: 0000000000000000 ........
@@ -38302,8 +38302,8 @@
0x00000008000fef48: @@ TypeArrayOther 320
0x00000008000fef48: 000000000000000d 00000008001b94f8 0000000000000000 00b7000900030001 ................................
0x00000008000fef68: 0000000000000000 0000000000000000 0000000000000007 0000000000000000 ................................
-0x00000008000fef88: 0000000000000000 0000000000000013 0000000800340430 00000008003401e8 ................0.4.......4.....
-0x00000008000fefa8: 00b9000800010019 0000000000000000 0000000000000006 b60000080001001d ................................
+0x00000008000fef88: 0000000000000000 0000000000000013 0000000000000000 0000000000000000 ................................
+0x00000008000fefa8: 0000000000000019 0000000000000000 0000000000000000 000000000000001d ................................
0x00000008000fefc8: 0000000000000000 0000000000000000 000000000000001e 0000000000000000 ................................
0x00000008000fefe8: 0000000000000000 0000000000000024 0000000000000000 0000000000000000 ........$.......................
0x00000008000ff008: 0000000000000026 0000000000000000 0000000000000000 000000000000002c &.......................,.......
@@ -132542,7 +132542,7 @@
0x0000000800340fd8: 0000000000000000 0000000000000000 00000008000ff088 00000008000fef48 ........................H.......
0x0000000800340ff8: @@ TypeArrayU8 72
0x0000000800340ff8: 0000000000000008 00000008001b8ff0 0000000000000000 0000000800340ce8 ..........................4.....
-0x0000000800341018: 00000008003401e8 0000000000000000 0000000000000000 0000000000000000 ..4.............................
+0x0000000800341018: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ................................
0x0000000800341038: 0000000000000000 ........
0x0000000800341040: @@ Method 88 java.lang.String jdk.internal.util.WeakReferenceKey.toString()
0x0000000800341040: 0000000800010788 0000000800a60038 0000000000000000 0000000000000000 ........8.......................
- links to
-
Review(master)
openjdk/jdk/29678