RFR (XS): 8015635: Crash when specifying very large code cache size

Pavel Punegov pavel.punegov at oracle.com
Mon Jul 15 10:08:55 PDT 2013


Hi,

I've filed a bug JDK-8020531

The test fails if it tries to create a java process with
-XX:ReservedCodeCacheSize=2048m 
when there are some limitations on the memory.
AFAIK 32-bit Windows processes are limited with about 3Gb of virtual memory, 
so then test fails. See bug for details.

Also this library doesn't print STDOUT/STDERR, so any failure looks like this:
java.lang.RuntimeException: Exit value 1 , expected to get 0

This gives no particular reason of what have happened. I think the 
OutputAnalyzer in the library  should be changed to print all output from 
executed process.

Thanks,
Pavel

On Monday 08 July 2013 14:31:02 Christian Thalinger wrote:
> On Jul 4, 2013, at 5:13 AM, Albert Noll <albert.noll at oracle.com> wrote:
>> Hi,
>> 
>> do you think the test is fine, or does it need to be reworked?
>
> I'm not sure.  Let's push it for now.  If Christian comes back and says
> there is a problem we can change it later.
> 
> -- Chris
> 
>> Best,
>> Albert
>> 
>> On 03.07.2013 00:26, Christian Thalinger wrote:
>>> On Jul 2, 2013, at 2:13 PM, Christian Tornqvist 
<christian.tornqvist at oracle.com> wrote:
>>>>   44     out.shouldHaveExitValue(1);
>>>> 
>>>> Will throw an exception if the exit value is not 1, this will detect a
>>>> VM crash (or other abnormal exit).>> 
>>> What if a VM crash would return 1 (for whatever reason)?
>>> 
>>> -- Chris
>>> 
>>>> Adding the check for the error message is a good change too though J
>>>> 
>>>> Thanks,
>>>> Christian
>>>> 
>>>> From: Albert Noll [mailto:albert.noll at oracle.com]
>>>> Sent: den 2 juli 2013 03:04
>>>> To: Christian Thalinger
>>>> Cc: Christian Tornqvist; 'Vladimir Kozlov'; 'hotspot compiler'
>>>> Subject: Re: RFR (XS): 8015635: Crash when specifying very large code
>>>> cache size
>>>> 
>>>> Hi Christian,
>>>> 
>>>> I am not sure either. Does anyone know if there exists a documentation
>>>> of the testlibrary? I modified the test such that it checks for (parts
>>>> of) the error message that is reported if the ReservedCodeCacheSize is
>>>> too large. This makes the test more robust.
>>>> 
>>>> Here is the new webrev:
>>>> http://cr.openjdk.java.net/~anoll/8015635/webrev.05/
>>>> 
>>>> Best,
>>>> Albert
>>>> 
>>>> 
>>>> On 02.07.2013 02:51, Christian Thalinger wrote:
>>>> I have no idea how this testlibrary works but does the following take
>>>> care of crashes or does it only check the exit value?>>> 
>>>>   42     pb =
>>>>   ProcessTools.createJavaProcessBuilder("-XX:ReservedCodeCacheSize=2049
>>>>   m", "-version"); 43     out = new OutputAnalyzer(pb.start());
>>>>   44     out.shouldHaveExitValue(1);
>>>> 
>>>> -- Chris
>>>> 
>>>> On Jun 30, 2013, at 9:44 PM, Albert Noll <albert.noll at oracle.com> wrote:
>>>> 
>>>> 
>>>> Hi,
>>>> 
>>>> thanks for looking at the patch. I updated the patch.
>>>> http://cr.openjdk.java.net/~anoll/8015635/webrev.04/
>>>> 
>>>> Could I have a second review for this?
>>>> 
>>>> Best,
>>>> Albert
>>>> 
>>>> On 28.06.2013 18:58, Christian Tornqvist wrote:
>>>> Hi Vladimir,
>>>> 
>>>> It's not needed if you simply want jtreg to run your test normally, from
>>>> the jtreg tag spec:
>>>> 
>>>> "DEFAULTS
>>>> 
>>>> If no @run tags are present in a defining file, a default is assumed
>>>> depending
>>>> upon the file's filename extension.  For a ".java" file, "@run main
>>>> <name>"
>>>> is
>>>> assumed, where <name> is the name of the file without the ".java"
>>>> suffix."
>>>> 
>>>> So using '@run main Test' is redundant.
>>>> 
>>>> Thanks,
>>>> Christian
>>>> 
>>>> -----Original Message-----
>>>> From: Vladimir Kozlov [mailto:vladimir.kozlov at oracle.com]
>>>> Sent: den 28 juni 2013 12:48
>>>> To: Christian Tornqvist
>>>> Cc: 'Albert Noll'; 'hotspot compiler'
>>>> Subject: Re: RFR (XS): 8015635: Crash when specifying very large code
>>>> cache
>>>> size
>>>> 
>>>> Christian,
>>>> 
>>>> Why '@run main Test' is not used in these tests?
>>>> 
>>>> Thanks,
>>>> Vladimir
>>>> 
>>>> On 6/28/13 9:08 AM, Christian Tornqvist wrote:
>>>> Hi Albert,
>>>> 
>>>> You should use '@library /testlibrary' instead of a relative path,
>>>> otherwise the test looks fine. Thanks for rewriting this in java and
>>>> fixing the name of the test J
>>>> 
>>>> Thanks,
>>>> 
>>>> Christian
>>>> 
>>>> *From:*hotspot-compiler-dev-bounces at openjdk.java.net
>>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] *On Behalf Of
>>>> *Albert Noll
>>>> *Sent:* den 28 juni 2013 11:19
>>>> *To:* hotspot compiler
>>>> *Subject:* Re: RFR (XS): 8015635: Crash when specifying very large
>>>> code cache size
>>>> 
>>>> Hi,
>>>> 
>>>> Christian, thanks for the comment. I implemented the test in Java.
>>>> I was not entirely sure how to use @library. The current version works
>>>> on my system.
>>>> 
>>>> 
>>>> Here is the new webrev:
>>>> http://cr.openjdk.java.net/~anoll/8015635/webrev.03/<http://cr.openjdk
>>>> .java.net/%7Eanoll/8015635/webrev.03/>
>>>> 
>>>> Best,
>>>> Albert
>>>> 
>>>> On 28.06.2013 10:19, Christian Tornqvist wrote:
>>>>     Hi Albert,
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     Please don't use shell scripts, this can be expressed in java
>>>> 
>>>> which will
>>>> 
>>>>     work on all platforms. See
> >>> 
>>>> http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/file/221df7e37535/te
>>>> st/run
>>>> 
>>>>     time/CommandLine/UnrecognizedVMOption.java for example on how to
>>>> 
>>>> do this in
>>>> 
>>>>     java.
>>>> 
>>>>     Also, please follow the test naming convention described at:
>>>> https://wikis.oracle.com/display/HotSpotInternals/Naming+HotSpot+JTReg
>>>> +Tests
>>>> 
>>>>     Thanks,
>>>>     
>>>>     
>>>>     
>>>>     Christian
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     From:hotspot-compiler-dev-bounces at openjdk.java.net
>>>> 
>>>> <mailto:hotspot-compiler-dev-bounces at openjdk.java.net>
>>>> 
>>>>     [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf
>>>> 
>>>> Of Albert
>>>> 
>>>>     Noll
>>>>     
>>>>     Sent: den 28 juni 2013 03:39
>>>>     
>>>>     To:hotspot-compiler-dev at openjdk.java.net
>>>> 
>>>> <mailto:hotspot-compiler-dev at openjdk.java.net>
>>>> 
>>>>     Subject: Re: RFR (XS): 8015635: Crash when specifying very large
>>>> 
>>>> code cache
>>>> 
>>>>     size
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     Hi Valdimir,
>>>>     
>>>>     
>>>>     
>>>>     thanks again for looking at the code.
>>>>     
>>>>     I implemented your proposed changes.
>>>>     
>>>>     
>>>>     
>>>>     http://cr.openjdk.java.net/~anoll/8015635/webrev.02/
>>>>     
>>>>     <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev.02/>
>>>> 
>>>> <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev.02/>
>>>> 
>>>>     Best,
>>>>     
>>>>     Albert
>>>>     
>>>>     
>>>>     
>>>>     On 28.06.2013 08:29, Vladimir Kozlov wrote:
>>>>     
>>>>     
>>>>     
>>>>     Albert,
>>>>     
>>>>     
>>>>     
>>>>     In the test could check the code after each java run? Example
>>>> 
>>>> shows only
>>>> 
>>>>     logic, not script instructions:
>>>>     
>>>>     
>>>>     
>>>>     java 2048m
>>>>     
>>>>     if $? -ne 0
>>>>     
>>>>       failed
>>>>       
>>>>       exit
>>>>     
>>>>     fi
>>>>     
>>>>     
>>>>     
>>>>     java 2049m
>>>>     
>>>>     if $? -eq 0
>>>>     
>>>>       failed
>>>>       
>>>>       exit
>>>>     
>>>>     fi
>>>>     
>>>>     
>>>>     
>>>>     passed
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     Thanks,
>>>>     
>>>>     Vladimir
>>>>     
>>>>     
>>>>     
>>>>     On 6/27/13 10:14 PM, Albert Noll wrote:
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     Hi,
>>>>     
>>>>     
>>>>     
>>>>     Pavel, Vladimir, thanks for looking at the patch. I added a
>>>> 
>>>> regression test
>>>> 
>>>>     and made the proposed changes in arguments.cpp.
>>>>     
>>>>     
>>>>     
>>>>     Here is the new webrev.
>>>>     
>>>>     http://cr.openjdk.java.net/~anoll/8015635/webrev.01/
>>>>     
>>>>     <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev.01/>
>>>> 
>>>> <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev.01/>
>>>> 
>>>>     <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev.01/>
>>>> 
>>>> <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev.01/>
>>>> 
>>>>     Thanks,
>>>>     
>>>>     Albert
>>>>     
>>>>     
>>>>     
>>>>     On 27.06.2013 18:36, Vladimir Kozlov wrote:
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     We don't place 'else' on separate line and remove comment inside
>>>> 
>>>> 'if' body
>>>> 
>>>>     and change it to:
>>>>     
>>>>     
>>>>     
>>>>     } else if (ReservedCodeCacheSize > 2*G) { {
>>>>     
>>>>        // Code cache size larger than MAXINT is not supported.
>>>>     
>>>>     Thanks,
>>>>     
>>>>     Vladimir
>>>>     
>>>>     
>>>>     
>>>>     On 6/27/13 5:01 AM, Albert Noll wrote:
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     Hi,
>>>>     
>>>>     
>>>>     
>>>>     thanks for reviewing this small patch.
>>>>     
>>>>     
>>>>     
>>>>     Best,
>>>>     
>>>>     Albert
>>>>     
>>>>     
>>>>     
>>>>     jbs:https://jbs.oracle.com/bugs/browse/JDK-8015635
>>>>     
>>>>     webrev:http://cr.openjdk.java.net/~anoll/8015635/webrev/
>>>>     
>>>>     <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev/>
>>>> 
>>>> <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev/>
>>>> 
>>>>     <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev/>
>>>> 
>>>> <http://cr.openjdk.java.net/%7Eanoll/8015635/webrev/>
>>>> 
>>>>     Problem: A code cache size larger than 2G is not supported and
>>>> 
>>>> therefore
>>>> 
>>>>     results in VM crashes.
>>>>     
>>>>     Solution: Limit the size of the code cache to at most 2G when
>>>> 
>>>> arguments are
>>>> 
>>>>     checked. If a larger code cache size is
>>>>     
>>>>     specified with -XX:ReservedCodeCacheSize=..., the JVM does not
>>>> 
>>>> start and
>>>> 
>>>>     reports an error.
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     
>>>>     Best,
>>>>     
>>>>     Albert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20130715/85cd0ac8/attachment-0001.html 


More information about the hotspot-compiler-dev mailing list