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