equal
deleted
inserted
replaced
84 // in progress. |
84 // in progress. |
85 static volatile jlong _step_start_time; |
85 static volatile jlong _step_start_time; |
86 // Whether or not the last error reporting step did timeout. |
86 // Whether or not the last error reporting step did timeout. |
87 static volatile bool _step_did_timeout; |
87 static volatile bool _step_did_timeout; |
88 |
88 |
|
89 static bool _error_reported; |
|
90 |
|
91 public: |
|
92 |
89 // set signal handlers on Solaris/Linux or the default exception filter |
93 // set signal handlers on Solaris/Linux or the default exception filter |
90 // on Windows, to handle recursive crashes. |
94 // on Windows, to handle recursive crashes. |
91 static void reset_signal_handlers(); |
95 static void reset_signal_handlers(); |
92 |
96 |
93 // handle -XX:+ShowMessageBoxOnError. buf is used to format the message string |
97 // handle -XX:+ShowMessageBoxOnError. buf is used to format the message string |
181 |
185 |
182 // Called by the WatcherThread to check if error reporting has timed-out. |
186 // Called by the WatcherThread to check if error reporting has timed-out. |
183 // Returns true if error reporting has not completed within the ErrorLogTimeout limit. |
187 // Returns true if error reporting has not completed within the ErrorLogTimeout limit. |
184 static bool check_timeout(); |
188 static bool check_timeout(); |
185 |
189 |
|
190 // Support for avoiding multiple asserts |
|
191 static bool is_error_reported(); |
|
192 |
|
193 // Test vmassert(), fatal(), guarantee(), etc. |
|
194 NOT_PRODUCT(static void test_error_handler();) |
|
195 NOT_PRODUCT(static void controlled_crash(int how);) |
|
196 |
|
197 // returns an address which is guaranteed to generate a SIGSEGV on read, |
|
198 // for test purposes, which is not NULL and contains bits in every word |
|
199 static void* get_segfault_address(); |
186 }; |
200 }; |
187 |
|
188 #endif // SHARE_VM_UTILITIES_VMERROR_HPP |
201 #endif // SHARE_VM_UTILITIES_VMERROR_HPP |