-
Bug
-
Resolution: Duplicate
-
P3
-
repo-valhalla
Scenario #4 of TestLWorld.java fails with a heap verification error:
$ jtreg ....... -vmoptions:-XX:+EnableValhallaC1 -vmoptions:-XX:TieredStopAtLevel=1 -DVerbose=true -DScenarios=4 TestLWorld.java
# Internal Error (/home/iklam/jdk/valhalla/open/src/hotspot/share/oops/compressedOops.inline.hpp:51), pid=30120, tid=30182
# assert(check_obj_alignment(result)) failed: address not aligned: 0x0000000000000001
#
# JRE version: Java(TM) SE Runtime Environment (13.0) (fastdebug build 13-internal+0-adhoc.iklam.open)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 13-internal+0-adhoc.iklam.open, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0xc68c4a] CompressedOops::decode_not_null(unsigned int)+0x8a
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xc68c4a] CompressedOops::decode_not_null(unsigned int)+0x8a
V [libjvm.so+0x11d1d52] void VerifyLiveClosure::verify_liveness<unsigned int>(unsigned int*)+0x62
V [libjvm.so+0x11d243d] void VerifyLiveClosure::do_oop_work<unsigned int>(unsigned int*)+0x9d
V [libjvm.so+0x11cfa85] void OopOopIterateDispatch<G1Mux2Closure>::Table::oop_oop_iterate<InstanceKlass, unsigned int>(G1Mux2Closure*, oop, Klass*)+0xd5
V [libjvm.so+0x11cb666] HeapRegion::verify(VerifyOption, bool*) const+0x2f6
V [libjvm.so+0x10def64] VerifyRegionClosure::do_heap_region(HeapRegion*)+0xc4
V [libjvm.so+0x11dc402] HeapRegionManager::par_iterate(HeapRegionClosure*, HeapRegionClaimer*, unsigned int) const+0x72
V [libjvm.so+0x10dc28d] G1ParVerifyTask::work(unsigned int)+0x6d
V [libjvm.so+0x1d31440] GangWorker::loop()+0xe0
V [libjvm.so+0x1bcfa86] Thread::call_run()+0xf6
V [libjvm.so+0x18b0a2e] thread_native_entry(Thread*)+0x10e
This failure can be avoided by changing this part of the scenario 4 flags:
public abstract class ValueTypeTest {
...
public String[] getVMParameters(int scenario) {
switch (scenario) {
...
case 4: return new String[] {
"-DVerifyIR=false",
"-XX:ValueArrayElemMaxFlatOops=-1",
"-XX:ValueArrayElemMaxFlatSize=-1",
// "-XX:ValueFieldMaxFlatSize=0", // comment out this line to avoid the crash
"-XX:+ValueTypePassFieldsAsArgs",
"-XX:-ValueTypeReturnedAsFields"};
case 5: return new String[] {
$ jtreg ....... -vmoptions:-XX:+EnableValhallaC1 -vmoptions:-XX:TieredStopAtLevel=1 -DVerbose=true -DScenarios=4 TestLWorld.java
# Internal Error (/home/iklam/jdk/valhalla/open/src/hotspot/share/oops/compressedOops.inline.hpp:51), pid=30120, tid=30182
# assert(check_obj_alignment(result)) failed: address not aligned: 0x0000000000000001
#
# JRE version: Java(TM) SE Runtime Environment (13.0) (fastdebug build 13-internal+0-adhoc.iklam.open)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 13-internal+0-adhoc.iklam.open, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0xc68c4a] CompressedOops::decode_not_null(unsigned int)+0x8a
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xc68c4a] CompressedOops::decode_not_null(unsigned int)+0x8a
V [libjvm.so+0x11d1d52] void VerifyLiveClosure::verify_liveness<unsigned int>(unsigned int*)+0x62
V [libjvm.so+0x11d243d] void VerifyLiveClosure::do_oop_work<unsigned int>(unsigned int*)+0x9d
V [libjvm.so+0x11cfa85] void OopOopIterateDispatch<G1Mux2Closure>::Table::oop_oop_iterate<InstanceKlass, unsigned int>(G1Mux2Closure*, oop, Klass*)+0xd5
V [libjvm.so+0x11cb666] HeapRegion::verify(VerifyOption, bool*) const+0x2f6
V [libjvm.so+0x10def64] VerifyRegionClosure::do_heap_region(HeapRegion*)+0xc4
V [libjvm.so+0x11dc402] HeapRegionManager::par_iterate(HeapRegionClosure*, HeapRegionClaimer*, unsigned int) const+0x72
V [libjvm.so+0x10dc28d] G1ParVerifyTask::work(unsigned int)+0x6d
V [libjvm.so+0x1d31440] GangWorker::loop()+0xe0
V [libjvm.so+0x1bcfa86] Thread::call_run()+0xf6
V [libjvm.so+0x18b0a2e] thread_native_entry(Thread*)+0x10e
This failure can be avoided by changing this part of the scenario 4 flags:
public abstract class ValueTypeTest {
...
public String[] getVMParameters(int scenario) {
switch (scenario) {
...
case 4: return new String[] {
"-DVerifyIR=false",
"-XX:ValueArrayElemMaxFlatOops=-1",
"-XX:ValueArrayElemMaxFlatSize=-1",
// "-XX:ValueFieldMaxFlatSize=0", // comment out this line to avoid the crash
"-XX:+ValueTypePassFieldsAsArgs",
"-XX:-ValueTypeReturnedAsFields"};
case 5: return new String[] {
- duplicates
-
JDK-8225371 [lworld][c1] TestLWorld.java fails with -DVerifyVM=true
-
- Resolved
-