annotate test/gc/TestG1ZeroPGCTJcmdThreadPrint.java @ 12986:1b422ef5288a

8025728: Missing volatile specifier for field G1AllocRegion::_alloc_region Summary: The field G1AllocRegion::_alloc_region needs to be declared volatile as it is used with that intention. Otherwise the compiler may generate the code that reloads the value which might have changed in the meantime, leading to spurious crashes. Reviewed-by: iveresov, simonis, tschatzl Contributed-by: Axel Siebenborn <axel.siebenborn@sap.com>
author tschatzl
date Wed, 23 Oct 2013 10:23:06 +0200
parents b9c5e46bf915
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8074
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
1 /*
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
4 *
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
7 * published by the Free Software Foundation.
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
8 *
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
13 * accompanied this code).
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
14 *
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
18 *
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
21 * questions.
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
22 */
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
23
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
24 /* @test TestG1ZeroPGCTJcmdThreadPrint
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
25 * @key gc
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
26 * @bug 8005875
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
27 * @summary Use jcmd to generate a thread dump of a Java program being run with PGCT=0 to verify 8005875
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
28 * @library /testlibrary
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
29 * @run main/othervm -XX:+UseG1GC -XX:ParallelGCThreads=0 -XX:+IgnoreUnrecognizedVMOptions TestG1ZeroPGCTJcmdThreadPrint
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
30 */
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
31
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
32 import com.oracle.java.testlibrary.*;
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
33
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
34 public class TestG1ZeroPGCTJcmdThreadPrint {
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
35 public static void main(String args[]) throws Exception {
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
36
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
37 // Grab the pid from the current java process
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
38 String pid = Integer.toString(ProcessTools.getProcessId());
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
39
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
40 // Create a ProcessBuilder
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
41 ProcessBuilder pb = new ProcessBuilder();
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
42
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
43 // Run jcmd <pid> Thread.print
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
44 pb.command(JDKToolFinder.getJDKTool("jcmd"), pid, "Thread.print");
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
45
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
46 OutputAnalyzer output = new OutputAnalyzer(pb.start());
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
47
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
48 // There shouldn't be a work gang for concurrent marking.
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
49 output.shouldNotContain("G1 Parallel Marking Threads");
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
50
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
51 // Make sure we didn't crash
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
52 output.shouldHaveExitValue(0);
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
53 }
b9c5e46bf915 8008188: Add regression test for 8005875
johnc
parents:
diff changeset
54 }