RFR: 8375055: C2: Better dead loop detection printout [v3]

Aleksey Shipilev shade at openjdk.org
Tue Jan 13 10:49:00 UTC 2026


> Chasing the maddeningly intermittent CTW failure. When C2 fails dead loop verification checks, it prints:
> 
> 
> # Internal Error (/home/shipilev/shipilev-jdk/src/hotspot/share/opto/phaseX.cpp:784), pid=64465, tid=917
> # assert(no_dead_loop) failed: dead loop detected
> 
> 
> It also dumps the bad node graph to tty. This is not really convenient in automated testing and/or driver tests like CTW. With this fix, we now print:
> 
> 
> #  Internal Error (/home/shade/trunks/jdk/src/hotspot/share/opto/phaseX.cpp:776), pid=973305, tid=973372
> #  fatal error: Dead loop detected, node references itself: CastPP
> 
> 
> ...which allows to have more clues where things may go wrong, and allows to classify the failures better as well.
> 
> Additional testing:
>  - [x] Ad-hoc crashes with selected seeds
>  - [x] Linux x86_64 server fastdebug, `hotspot_compiler`
>  - [x] Linux x86_64 server fastdebug, `applications/ctw/modules`

Aleksey Shipilev has refreshed the contents of this pull request, and previous commits have been removed. Incremental views are not available. The pull request now contains two commits:

 - Only do node name
 - Fix

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/29185/files
  - new: https://git.openjdk.org/jdk/pull/29185/files/037e92dd..6b0e6e8d

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=29185&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29185&range=01-02

  Stats: 2 lines in 1 file changed: 0 ins; 1 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/29185.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29185/head:pull/29185

PR: https://git.openjdk.org/jdk/pull/29185


More information about the hotspot-compiler-dev mailing list