1 /*
2 * Copyright (c) 2017, 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 */
68 String hs_err_file = output_detail.firstMatch("# *(\\S*hs_err_pid\\d+\\.log)", 1);
69 if (hs_err_file == null) {
70 throw new RuntimeException("Did not find hs_err_pid file in output.\n");
71 }
72
73 File f = new File(hs_err_file);
74 if (!f.exists()) {
75 throw new RuntimeException("hs_err_pid file missing at "
76 + f.getAbsolutePath() + ".\n");
77 }
78
79 System.out.println("Found hs_err_pid file. Scanning...");
80
81 FileInputStream fis = new FileInputStream(f);
82 BufferedReader br = new BufferedReader(new InputStreamReader(fis));
83 String line = null;
84
85 Pattern [] pattern = new Pattern[] {
86 // The "Current thread" line should show a hazard ptr and
87 // a nested hazard ptr:
88 Pattern.compile("Current thread .* _threads_hazard_ptr=0x[0-9A-Fa-f][0-9A-Fa-f]*, _nested_threads_hazard_ptr_cnt=1, _nested_threads_hazard_ptrs=0x.*"),
89 // We should have a section of Threads class SMR info:
90 Pattern.compile("Threads class SMR info:"),
91 // We should have one nested ThreadsListHandle:
92 Pattern.compile(".*, _nested_thread_list_max=1"),
93 // The current thread (marked with '=>') in the threads list
94 // should show a hazard ptr:
95 Pattern.compile("=>.* JavaThread \"main\" .*_threads_hazard_ptr=0x[0-9A-Fa-f][0-9A-Fa-f]*, _nested_threads_hazard_ptr_cnt=1, _nested_threads_hazard_ptrs=0x.*"),
96 };
97 int currentPattern = 0;
98
99 String lastLine = null;
100 while ((line = br.readLine()) != null) {
101 if (currentPattern < pattern.length) {
102 if (pattern[currentPattern].matcher(line).matches()) {
103 System.out.println("Found: " + line + ".");
104 currentPattern++;
105 }
106 }
107 lastLine = line;
108 }
109 br.close();
110
111 if (currentPattern < pattern.length) {
112 throw new RuntimeException("hs_err_pid file incomplete (first missing pattern: " + currentPattern + ")");
113 }
114
115 if (!lastLine.equals("END.")) {
|
1 /*
2 * Copyright (c) 2017, 2018, 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 */
68 String hs_err_file = output_detail.firstMatch("# *(\\S*hs_err_pid\\d+\\.log)", 1);
69 if (hs_err_file == null) {
70 throw new RuntimeException("Did not find hs_err_pid file in output.\n");
71 }
72
73 File f = new File(hs_err_file);
74 if (!f.exists()) {
75 throw new RuntimeException("hs_err_pid file missing at "
76 + f.getAbsolutePath() + ".\n");
77 }
78
79 System.out.println("Found hs_err_pid file. Scanning...");
80
81 FileInputStream fis = new FileInputStream(f);
82 BufferedReader br = new BufferedReader(new InputStreamReader(fis));
83 String line = null;
84
85 Pattern [] pattern = new Pattern[] {
86 // The "Current thread" line should show a hazard ptr and
87 // a nested hazard ptr:
88 Pattern.compile("Current thread .* _threads_hazard_ptr=0x[0-9A-Fa-f][0-9A-Fa-f]*, _nested_threads_hazard_ptr_cnt=1, _nested_threads_hazard_ptr=0x[0-9A-Fa-f][0-9A-Fa-f]*.*"),
89 // We should have a section of Threads class SMR info:
90 Pattern.compile("Threads class SMR info:"),
91 // We should have one nested ThreadsListHandle:
92 Pattern.compile(".*, _nested_thread_list_max=1"),
93 // The current thread (marked with '=>') in the threads list
94 // should show a hazard ptr and a nested hazard ptr:
95 Pattern.compile("=>.* JavaThread \"main\" .* _threads_hazard_ptr=0x[0-9A-Fa-f][0-9A-Fa-f]*, _nested_threads_hazard_ptr_cnt=1, _nested_threads_hazard_ptr=0x[0-9A-Fa-f][0-9A-Fa-f]*.*"),
96 };
97 int currentPattern = 0;
98
99 String lastLine = null;
100 while ((line = br.readLine()) != null) {
101 if (currentPattern < pattern.length) {
102 if (pattern[currentPattern].matcher(line).matches()) {
103 System.out.println("Found: " + line + ".");
104 currentPattern++;
105 }
106 }
107 lastLine = line;
108 }
109 br.close();
110
111 if (currentPattern < pattern.length) {
112 throw new RuntimeException("hs_err_pid file incomplete (first missing pattern: " + currentPattern + ")");
113 }
114
115 if (!lastLine.equals("END.")) {
|