When -XX:+ZVerifyForwarding is enabled, the following failure is always observed:
# Internal Error
(/home/stumon01/repos/jdk/src/hotspot/share/gc/z/zForwarding.cpp:72),
pid=13355, tid=13359
# guarantee(entry.from_index() != other.from_index()) failed: Duplicate from
Current thread (0x00007fd65c04f3a0): GCTaskThread "ZWorker#2" [stack:
0x00007fd661542000,0x00007fd661642000] [id=13359]
Stack: [0x00007fd661542000,0x00007fd661642000],
sp=0x00007fd661640c30, free space=1019k
Native frames: (J=compiled Java code, A=aot compiled Java code,
j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x13729b2] ZForwarding::verify() const+0x1c6
V [libjvm.so+0x13948c2] ZRelocate::work(ZRelocationSetParallelIterator*)+0x7a
V [libjvm.so+0x139557d] ZRelocateTask::work()+0x27
V [libjvm.so+0x139f55c] ZTask::GangTask::work(unsigned int)+0x38
V [libjvm.so+0x135353b] GangWorker::run_task(WorkData)+0xab
V [libjvm.so+0x13535f3] GangWorker::loop()+0x37
V [libjvm.so+0x135327a] AbstractGangWorker::run()+0x3e
V [libjvm.so+0x125ce2b] Thread::call_run()+0x195
V [libjvm.so+0xfb9fae] thread_native_entry(Thread*)+0x1ee
The code is iterating over every ZForwardingEntry, skipping the empty entries, however what it is checking against does include empty entries, which will happen to match.
# Internal Error
(/home/stumon01/repos/jdk/src/hotspot/share/gc/z/zForwarding.cpp:72),
pid=13355, tid=13359
# guarantee(entry.from_index() != other.from_index()) failed: Duplicate from
Current thread (0x00007fd65c04f3a0): GCTaskThread "ZWorker#2" [stack:
0x00007fd661542000,0x00007fd661642000] [id=13359]
Stack: [0x00007fd661542000,0x00007fd661642000],
sp=0x00007fd661640c30, free space=1019k
Native frames: (J=compiled Java code, A=aot compiled Java code,
j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x13729b2] ZForwarding::verify() const+0x1c6
V [libjvm.so+0x13948c2] ZRelocate::work(ZRelocationSetParallelIterator*)+0x7a
V [libjvm.so+0x139557d] ZRelocateTask::work()+0x27
V [libjvm.so+0x139f55c] ZTask::GangTask::work(unsigned int)+0x38
V [libjvm.so+0x135353b] GangWorker::run_task(WorkData)+0xab
V [libjvm.so+0x13535f3] GangWorker::loop()+0x37
V [libjvm.so+0x135327a] AbstractGangWorker::run()+0x3e
V [libjvm.so+0x125ce2b] Thread::call_run()+0x195
V [libjvm.so+0xfb9fae] thread_native_entry(Thread*)+0x1ee
The code is iterating over every ZForwardingEntry, skipping the empty entries, however what it is checking against does include empty entries, which will happen to match.
- relates to
-
JDK-8221540 ZGC: Reduce width of zForwardingEntry::from_index field
- Resolved