RFR: 8308094: Add a compilation timeout flag to catch long running compilations [v8]
Manuel Hässig
mhaessig at openjdk.org
Thu Aug 14 14:57:36 UTC 2025
> This PR adds `-XX:CompileTaskTimeout` on Linux to limit the amount of time a compilation task can run. The goal of this is initially to be able to find and investigate long-running compilations.
>
> The timeout is implemented using a POSIX timer that sends a `SIGALRM` to the compiler thread the compile task is running on. Each compiler thread registers a signal handler that triggers an assert upon receiving `SIGALRM`. This is currently only implemented for Linux, because it relies on `SIGEV_THREAD_ID` to get the signal delivered to the same thread that timed out.
>
> Since `SIGALRM` is now used, the test `runtime/signal/TestSigalrm.java` now requires `vm.flagless` so it will not interfere with the compiler thread signal handlers.
>
> Testing:
> - [x] Github Actions
> - [x] tier1, tier2 on all platforms
> - [x] tier3, tier4 and Oracle internal testing on Linux fastdebug
> - [x] tier1 through tier4 with `-XX:CompileTaskTimeout=60000` (one minute timeout) to see what fails (`compiler/codegen/TestAntiDependenciesHighMemUsage2.java`, `compiler/loopopts/TestMaxLoopOptsCountReached.java`, and `compiler/c2/TestScalarReplacementMaxLiveNodes.java` fail)
Manuel Hässig has updated the pull request incrementally with one additional commit since the last revision:
Fix format string
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/26023/files
- new: https://git.openjdk.org/jdk/pull/26023/files/9a43ef26..ee64b092
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=26023&range=07
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=26023&range=06-07
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/26023.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/26023/head:pull/26023
PR: https://git.openjdk.org/jdk/pull/26023
More information about the hotspot-dev
mailing list