Mercurial > hg > truffle
annotate test/gc/TestVerifyDuringStartup.java @ 17716:cdb71841f4bc
6498581: ThreadInterruptTest3 produces wrong output on Windows
Summary: There is race condition between os::interrupt and os::is_interrupted on Windows. In JVM_Sleep(Thread.sleep), check if thread gets interrupted, it may see interrupted but not really interrupted so cause spurious waking up (early return from sleep). Fix by checking if interrupt event really gets set thus prevent false return. For intrinsic of _isInterrupted, on Windows, go fastpath only on bit not set.
Reviewed-by: acorn, kvn
Contributed-by: david.holmes@oracle.com, yumin.qi@oracle.com
author | minqi |
---|---|
date | Wed, 26 Feb 2014 15:20:41 -0800 |
parents | 22194f27fbfb |
children |
rev | line source |
---|---|
8855 | 1 /* |
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. | |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
20 * or visit www.oracle.com if you need additional information or have any | |
21 * questions. | |
22 */ | |
23 | |
9071
68fe50d4f1d5
8011343: Add new flag for verifying the heap during startup
johnc
parents:
8855
diff
changeset
|
24 /* @test TestVerifyDuringStartup.java |
8855 | 25 * @key gc |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
26 * @bug 8010463 8011343 8011898 |
9071
68fe50d4f1d5
8011343: Add new flag for verifying the heap during startup
johnc
parents:
8855
diff
changeset
|
27 * @summary Simple test run with -XX:+VerifyDuringStartup -XX:-UseTLAB to verify 8010463 |
8855 | 28 * @library /testlibrary |
29 */ | |
30 | |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
31 import com.oracle.java.testlibrary.JDKToolFinder; |
8855 | 32 import com.oracle.java.testlibrary.OutputAnalyzer; |
33 import com.oracle.java.testlibrary.ProcessTools; | |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
34 import java.util.ArrayList; |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
35 import java.util.Collections; |
8855 | 36 |
9071
68fe50d4f1d5
8011343: Add new flag for verifying the heap during startup
johnc
parents:
8855
diff
changeset
|
37 public class TestVerifyDuringStartup { |
8855 | 38 public static void main(String args[]) throws Exception { |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
39 ArrayList<String> vmOpts = new ArrayList(); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
40 |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
41 String testVmOptsStr = System.getProperty("test.java.opts"); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
42 if (!testVmOptsStr.isEmpty()) { |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
43 String[] testVmOpts = testVmOptsStr.split(" "); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
44 Collections.addAll(vmOpts, testVmOpts); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
45 } |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
46 Collections.addAll(vmOpts, new String[] {"-XX:-UseTLAB", |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
47 "-XX:+UnlockDiagnosticVMOptions", |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
48 "-XX:+VerifyDuringStartup", |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
49 "-version"}); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
50 |
12260
22194f27fbfb
8014905: [TESTBUG] Some hotspot tests should be updated to divide test jdk and compile jdk
ctornqvi
parents:
12187
diff
changeset
|
51 System.out.print("Testing:\n" + JDKToolFinder.getJDKTool("java")); |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
52 for (int i = 0; i < vmOpts.size(); i += 1) { |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
53 System.out.print(" " + vmOpts.get(i)); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
54 } |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
55 System.out.println(); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
56 |
8855 | 57 ProcessBuilder pb = |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
58 ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()])); |
8855 | 59 OutputAnalyzer output = new OutputAnalyzer(pb.start()); |
10189
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
60 |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
61 System.out.println("Output:\n" + output.getOutput()); |
3edf23423bb2
8011898: gc/TestVerifyBeforeGCDuringStartup.java: java.lang.RuntimeException: '[Verifying' missing from stdout/stderr: [Error: Could not find or load main class]
johnc
parents:
9071
diff
changeset
|
62 |
8855 | 63 output.shouldContain("[Verifying"); |
64 output.shouldHaveExitValue(0); | |
65 } | |
66 } |