RFR (XS): 8129855: -XX:+IgnoreUnrecognizedVMOptions hides "out of range" VM options.

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jul 31 02:41:07 UTC 2015


Yes, lets hear others opinion.

Note, your current changes should change 1.1.3 behavior too (should 
produce ERR).

So new consistent behavior is if a flag is *known* and *modifiable* the 
result should be the same with and without IgnoreUnrecognizedVMOptions flag.

You are also missing an other testing configuration - invalid usage of 
debug flag in product VM:

-XX:DeoptimizeALot or -XX:CIStart=notnum

Those should be ignored in product (produce OK).

Thanks,
Vladimir

On 7/30/15 4:00 PM, gerard ziemski wrote:
> (resending with tables formatted using plain text - the mailing list
> sanitized my real tables. hopefully the plain text formatting will get
> preserved, if not, please see the table in the bug's comments section at
> https://bugs.openjdk.java.net/browse/JDK-8129855)
>
> Thank you Dmitry and Vladimir for feedback. I have a follow-up question
> to Vladimir's feedback:
>
>> I think we need more detailed check in case of locked flags. We should
>> bailout only for product vs develop and product vs notproduct
>> combinations (last 2 cases in get_locked_message()). For diagnostic
>> and experimental flags we should exit with error message - this flags
>> are available in product and most likely a developer forgot to add
>> unlock flag. If we ignore them a test will be executed differently
>> than intended. Thanks, Vladimir
>
> So, you are asking for changing the current behavior? According to the
> tests I performed (see #1.3.4, #1.3.5, #1.3.6 in table #1.3) what you
> ask for is a new behavior. What you ask for is to have
> "-XX:+IgnoreUnrecognizedVMOptions" not have any effect on locked
> experimental, diagnostic and commercial" flags, right?
>
> The issue JDK-8129855 only asks to restore behavior demonstrated by case
> #1.2.4 and not to break existing case #1.5.3 and #1.5.4, but I am open
> to do the changes you ask for if that's the consensus.
>
> Please see the following test cases and verify that this is the behavior
> we want - if that's the case, then I will make the corresponding change
> and do an update to my webrev (which at moment fails #1.3.4, #1.3.5 and
> #1.3.5 in table #1.3):
>
> Note: "(1)" next to results denotes a result that is different from the
> current jdk9/hs-rt behavior!
> Note: "(2)" next to results denotes a result that is different from the
> jdk8 behavior!
>
>
> #1.1 normal flag (unchanged):
>
>                                  exists, invalid value         does not
> exist
> -XX:MinHeapFreeRatio=notnum   -XX:THIS_FLAG_DOESNT_EXIST
> -IgnoreUnrecognizedVMOptions ERR                          ERR
> +IgnoreUnrecognizedVMOptions OK                           OK
>
> #1.1.1 java -XX:-IgnoreUnrecognizedVMOptions -XX:MinHeapFreeRatio=notnum
> -version ;  if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.1.2 java -XX:-IgnoreUnrecognizedVMOptions -XX:THIS_FLAG_DOESNT_EXIST
> -version ;  if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.1.3 java -XX:+IgnoreUnrecognizedVMOptions -XX:MinHeapFreeRatio=notnum
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.1.4 java -XX:+IgnoreUnrecognizedVMOptions -XX:THIS_FLAG_DOESNT_EXIST
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
>
>
> #1.2 normal flag with ranges (the core of JDK-8129855, fixed):
>
>                                  exists, in range              exists,
> out of range
> -XX:StackRedPages=1           -XX:StackRedPages=0
> -IgnoreUnrecognizedVMOptions OK                            ERR
> +IgnoreUnrecognizedVMOptions OK                            ERR (1)
>
> #1.2.1 java -XX:-IgnoreUnrecognizedVMOptions -XX:StackRedPages=1
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.2.2 java -XX:-IgnoreUnrecognizedVMOptions -XX:StackRedPages=0
> -version ;  if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.2.3 java -XX:+IgnoreUnrecognizedVMOptions -XX:StackRedPages=1
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.2.4 java -XX:+IgnoreUnrecognizedVMOptions -XX:StackRedPages=0
> -version ;  if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
>
>
> #1.3 locked flag (new behavior):
>
>                                  diagnostic & locked experimental &
> locked commercial & locked
> -XX:-UnlockDiagnosticVMOptions -XX:-UnlockExperimentalVMOptions
> -XX:-UnlockCommercialFeatures
> -XX:+PrintInlining -XX:+AlwaysSafeConstructors        -XX:+FlightRecorder
> -IgnoreUnrecognizedVMOptions ERR ERR                              ERR
> +IgnoreUnrecognizedVMOptions           ERR (1)(2)    ERR (1)(2) ERR (1)(2)
>
> #1.3.1 java -XX:-IgnoreUnrecognizedVMOptions
> -XX:-UnlockDiagnosticVMOptions   -XX:+PrintInlining -version ;  if [ $?
> -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.3.2 java -XX:-IgnoreUnrecognizedVMOptions
> -XX:-UnlockExperimentalVMOptions -XX:+AlwaysSafeConstructors -version ;
> if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.3.3 java -XX:-IgnoreUnrecognizedVMOptions
> -XX:-UnlockCommercialFeatures    -XX:+FlightRecorder -version ;  if [ $?
> -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.3.4 java -XX:+IgnoreUnrecognizedVMOptions
> -XX:-UnlockDiagnosticVMOptions   -XX:+PrintInlining -version ;  if [ $?
> -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.3.5 java -XX:+IgnoreUnrecognizedVMOptions
> -XX:-UnlockExperimentalVMOptions -XX:+AlwaysSafeConstructors -version ;
> if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.3.6 java -XX:+IgnoreUnrecognizedVMOptions
> -XX:-UnlockCommercialFeatures    -XX:+FlightRecorder -version ;  if [ $?
> -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
>
>
> #1.4 develop & notproduct flag on debug VM (trivial, unchanged):
>
>                                  develop & !product_build notproduct &
> !product_build
> -XX:+DeoptimizeALot           -XX:+VerifyCodeCache
> -IgnoreUnrecognizedVMOptions OK                            OK
> +IgnoreUnrecognizedVMOptions OK                            OK
>
> #1.4.1 java -XX:-IgnoreUnrecognizedVMOptions -XX:+DeoptimizeALot
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.4.2 java -XX:-IgnoreUnrecognizedVMOptions -XX:+VerifyCodeCache
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.4.3 java -XX:+IgnoreUnrecognizedVMOptions -XX:+DeoptimizeALot
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.4.4 java -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyCodeCache
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
>
>
> #1.5 develop & notproduct flag on product VM (consistent with
> JDK-6886353, unchanged):
>
>                                  develop & product_build notproduct &
> product_build
> -XX:+DeoptimizeALot           -XX:+VerifyCodeCache
> -IgnoreUnrecognizedVMOptions           ERR                           ERR
> +IgnoreUnrecognizedVMOptions OK                            OK
>
> #1.5.1 java -XX:-IgnoreUnrecognizedVMOptions -XX:+DeoptimizeALot
> -version ;  if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.5.2 java -XX:-IgnoreUnrecognizedVMOptions -XX:+VerifyCodeCache
> -version ;  if [ $? -ne 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.5.3 java -XX:+IgnoreUnrecognizedVMOptions -XX:+DeoptimizeALot
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
> #1.5.4 java -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyCodeCache
> -version ;  if [ $? -eq 0 ] ; then echo PASS ; else echo FAIL ; fi
>
>
>
> ------------------------------------------------------------------------------------------------------------------------------------
>
>
> There was a brief email thread on this subject sometime ago at
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2015-June/019213.html
> and it was decided that we need a new flag that provides a better
> alternative - that effort is now tracked by
> https://bugs.openjdk.java.net/browse/JDK-8132545
>
> Tested with test case from
> https://bugs.openjdk.java.net/browse/JDK-8130697,
> https://bugs.openjdk.java.net/browse/JDK-6886353and via "JPRT -testset
> hotspot"
>
> References:
>         bug:https://bugs.openjdk.java.net/browse/JDK-8129855
>      webrev: http://cr.openjdk.java.net/~gziemski/8129855_rev0/
>
>
> cheers
>
>


More information about the hotspot-dev mailing list