RFR: 8186502: Assert when range testing G1RefProcDrainInterval on 64-bit systems

Leo Korinth leo.korinth at oracle.com
Mon Nov 6 09:55:57 UTC 2017

Hi Sangheon.

On 04/11/17 00:36, sangheon.kim wrote:
 > Hi Leo,
 > On 11/03/2017 02:24 AM, Leo Korinth wrote:
 >> Hi,
 >> Fix range checking when using -XX:G1RefProcDrainInterval=n
 >> On 64 bit machines, when issuing extremly large integer arguments
 >> to -XX:G1RefProcDrainInterval=n, a 32 bit integer will overflow and
 >> cause a crash.
 >> First I have improved the tests by adding the flag
 >> -XX:+ExplicitGCInvokesConcurrent when testing the flag
 >> -XX:G1RefProcDrainInterval=n to trigger the fault in our
 >> test suit.
 >> Then I have fixed the fault by limiting the arguments on 64 bit
 >> systems (using an int type instead of intx type and a range up to
 >> only INT_MAX for argument parsing).
 >> Bug:
 >> https://bugs.openjdk.java.net/browse/JDK-8186502
 >> Webrev:
 >> http://cr.openjdk.java.net/~lkorinth/8186502/00/
 > Looks good, thank you for fixing for this.
 > Just minor nit: you can update copyright year at g1_globals.hpp.

Thanks, copyright year fixed in:

 > BTW, did you run TestOptionsWithRanges.java manually?
 > Probably this test is still excluded by default when you run JPRT.

Yes, first I updated the test so that it triggered the bug (and ran the 
test manually to verify that it indeed triggered the bug). Then I fixed 
the bug. After that I ran the test again (and the test passed).

I am unsure if the test is enabled when you run JPRT though, but if it 
is, it will pass.


 > Thanks,
 > Sangheon
 >> Testing:
 >> - JPRT
 >> Thanks,
 >> Leo

More information about the hotspot-gc-dev mailing list