RFR: 8156762: compiler/ciReplay/TestVM_no_comp_level.java fails with - 'Unexpected exit code for negative case: [-client]: expected 0 to not equal 0'

Rahul Raghavan rahul.v.raghavan at oracle.com
Thu Dec 8 08:10:27 UTC 2016


Hi,

Please review following patch for JDK-8156762.
<webrev.00> -  http://cr.openjdk.java.net/~rraghavan/8156762/webrev.00/

<jbs> - https://bugs.openjdk.java.net/browse/JDK-8156762

Please note that JDK-8156762 is an Oracle closed bug,
  reporting failure for hotspot/test/compiler/ciReplay/TestVM_no_comp_level.sh
  for build configuration with only Client VM.

Understood the test scenario as
    - force JVM to generate test_replay.txt file
    - remove compilation level from test_replay.txt file
    - then check replay the modified test_replay.txt

Above proposed test fix in webrev.00 -
    [test/compiler/ciReplay/TestVMNoCompLevel.java]
        ..............
        public void testAction() {
            ......
            ......
            if (CLIENT_VM_AVAILABLE) {
    -           negativeTest(CLIENT_VM_OPTION);
    +           if (SERVER_VM_AVAILABLE) {
    +               negativeTest(CLIENT_VM_OPTION);
    +           }
    +           else {
    +               positiveTest(CLIENT_VM_OPTION);
    +           }
            }
            if (SERVER_VM_AVAILABLE) {
                positiveTest(TIERED_DISABLED_VM_OPTION, SERVER_VM_OPTION);
                positiveTest(TIERED_ENABLED_VM_OPTION, SERVER_VM_OPTION);
            }
        }
        ..............

The test was written expecting VM to crash always in Client VM available case,
  when replay the modified test_replay.txt without compilation level.
But found this is not true because a default compiler level of highest available level value is always used, if the same is missing,
  to support older version of Compiler replay without compiler level support.
[process_compile() - hotspot\src\share\vm\ci\ciReplay.cpp]

So for the reported case if ONLY CLIENT_VM_AVAILABLE is true -
Originally in test, VM was expected to crash always here.
Found this is wrong due to the setting of default compiler level 
  to highest available level value in process_compile() - which is 'CompLevel_simple' in this case.
So for ONLY CLIENT_VM_AVAILABLE case the VM will not crash at 'is_valid_comp_level()',
  going ahead with replaying the modified test_replay.txt with -client option.
(.i.e.   positiveTest(-client) is required)

For the case with if both CLIENT_VM_AVAILABLE and SERVER_VM_AVAILABLE are true,
when test_replay.txt without compilation level is used,
the default compiler level assigned in process_compile() will be 'CompLevel_full_optimization'.
So when attempted replay the modified test_replay.txt with -client option,
  the VM should fail  for 'if (CLIENT_VM_AVAILABLE)' block at -
     if (!TieredCompilation && (comp_level != CompLevel_highest_tier)) check [is_valid_comp_level()]
(.i.e.   negativeTest(-client) is required)

The further testing for SERVER_VM_AVAILABLE is not touched 
and any how will always continue with required tiered disable/enabled , -server options.

No issues with testing for various targets.

Thanks,
Rahul


More information about the hotspot-compiler-dev mailing list