RFR: JDK-8303861: Error handling step timeouts should never be blocked by OnError and others
Thomas Stuefe
stuefe at openjdk.org
Thu Mar 9 06:23:12 UTC 2023
Fatal error handling is subject to several timeouts:
- a global timeout (controlled via ErrorLogTimeout)
- local error reporting step timeouts.
The latter aims to "give the JVM a kick" if it gets stuck in one particular place during error reporting. This prevents one error reporting step from hogging all the time allotted to error reporting under ErrorLogTimeout.
There are three situations where atm we suppress the global error timeout:
- if the JVM is embedded and the launcher has its abort hook installed. Obviously, that must be allowed to run.
- if the user specified one or more OnError commands to run, and these did not yet run. These must have a chance to run unmolested.
- if the user (typically developer) specified ShowMessageBoxOnError, and the error box has not yet been shown
There is a bug though, that also prevents the step timeout from firing if either condition is true. That is plain wrong.
In addition to that, the test interval WatcherThread uses to check for timeouts should be decreased. It sits at 1 second, which is too coarse-grained.
--------
Patch:
- reworks `VMError::check_timeout()` to never block step timeouts
- adds clarifying comments
- quadruples timeout check frequency by watcher thread
- adds regression test for timeout handling with OnError
Tested locally on Linux x64.
-------------
Commit messages:
- JDK-8303861-Error-handling-step-timeouts-should-never-be-blocked-by-OnError-and-others
Changes: https://git.openjdk.org/jdk/pull/12936/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12936&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8303861
Stats: 88 lines in 3 files changed: 55 ins; 1 del; 32 mod
Patch: https://git.openjdk.org/jdk/pull/12936.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12936/head:pull/12936
PR: https://git.openjdk.org/jdk/pull/12936
More information about the hotspot-dev
mailing list