RFR: 8346888: [ubsan] block.cpp:1617:30: runtime error: 9.97582e+36 is outside the range of representable values of type 'int'

Dean Long dlong at openjdk.org
Thu Mar 20 19:28:08 UTC 2025


On Thu, 20 Mar 2025 17:56:36 GMT, Roberto Castañeda Lozano <rcastanedalo at openjdk.org> wrote:

>> Could the problem be inconsistent use of non_connector_successor?  Isn't there some logic which forces deopt blocks to have low frequencies?  It it's only setting the non_connector_successor frequency then you'd get inconsistent results if you didn't use non_connector_successor for examining successors.  Maybe it should be adjusting the frequency of all blocks leading to the non_connector_successor?
>
>> There may be a bug in frequency propagation.
> 
> I haven't looked at these failures but could it have to do with irreducible loops? This is a known reason of frequency propagation inaccuracy in C2, see [JDK-8258895](https://bugs.openjdk.org/browse/JDK-8258895).

@robcasloz , that could be it, but I'm not enough of an expert.  It seems to be this loop:
https://github.com/openjdk/jdk/blob/56038fb5a156568cce2e80f5db18b10ad61c06e4/test/jdk/java/foreign/TestHandshake.java#L104
and the block gets detected as empty and moved to the end by PhaseCFG::remove_empty_blocks().  Roberto, do you have time to help look at this?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23962#discussion_r2006312398


More information about the hotspot-compiler-dev mailing list