Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8205902 | 11.0.1 | Robbin Ehn | P3 | Resolved | Fixed | team |
This bug is manifested in one of Shenandoah tests, I have hard time to create a test case for G1, since it depends the sequence when rehashing is triggered.
If a rehashing is performed right after growing, following assertion is triggered:
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/concurrentHashTable.inline.hpp:1210
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/zgu/workspace/shenandoah-jdk/src/hotspot/share/utilities/concurrentHashTable.inline.hpp:1210), pid=15970, tid=15976
# assert(_new_table == __null) failed: Must be NULL
#
# JRE version: OpenJDK Runtime Environment (11.0) (fastdebug build 11-internal+0-adhoc.zgu.shenandoah-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 11-internal+0-adhoc.zgu.shenandoah-jdk, mixed mode, tiered, compressed oops, shenandoah gc, linux-amd64)
I believe the cause is that at the end of growing hashtable, internal_grow_epilog() calls set_table_from_new(), which set _new_table = POISION_PTR in debug build, which triggers above assertion during rehashing.
-Xlog:stringtable=debug output:
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:5.09259
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:7.73067
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:11.204
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:9.42305
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:5.09259
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:5.09259
[8.984s][debug][stringtable] Grown to size:131072
[9.847s][debug][stringtable] Table imbalanced, rehashing called.
If a rehashing is performed right after growing, following assertion is triggered:
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/concurrentHashTable.inline.hpp:1210
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/zgu/workspace/shenandoah-jdk/src/hotspot/share/utilities/concurrentHashTable.inline.hpp:1210), pid=15970, tid=15976
# assert(_new_table == __null) failed: Must be NULL
#
# JRE version: OpenJDK Runtime Environment (11.0) (fastdebug build 11-internal+0-adhoc.zgu.shenandoah-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 11-internal+0-adhoc.zgu.shenandoah-jdk, mixed mode, tiered, compressed oops, shenandoah gc, linux-amd64)
I believe the cause is that at the end of growing hashtable, internal_grow_epilog() calls set_table_from_new(), which set _new_table = POISION_PTR in debug build, which triggers above assertion during rehashing.
-Xlog:stringtable=debug output:
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:5.09259
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:7.73067
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:11.204
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:9.42305
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:5.09259
[8.820s][debug][stringtable] Concurrent work triggered, live factor:11.2534 dead factor:5.09259
[8.984s][debug][stringtable] Grown to size:131072
[9.847s][debug][stringtable] Table imbalanced, rehashing called.
- backported by
-
JDK-8205902 Assertion failure when rehashing stringtable
-
- Resolved
-