RFR: 8330157: C2: Add a stress flag for bailouts

Daniel Skantz duke at openjdk.org
Wed Jun 12 15:24:13 UTC 2024


On Tue, 11 Jun 2024 09:54:31 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:

>> This patch adds a diagnostic/stress flag for C2 bailouts. It can be used to support testing of existing bailouts to prevent issues like [JDK-8318445](https://bugs.openjdk.org/browse/JDK-8318445), and can test for issues only seen at runtime such as [JDK-8326376](https://bugs.openjdk.org/browse/JDK-8326376). It can also be useful if we want to add more bailouts ([JDK-8318900](https://bugs.openjdk.org/browse/JDK-8318900)).
>> 
>> We check two invariants.
>> a) Bailouts should be successful starting from any given `failing()` check.
>> b) The VM should not record a bailout when one is pending (in which case we have continued to optimize for too long).
>> 
>> a), b) are checked by randomly starting a bailout at calls to `failing()` with a user-given probability.
>> 
>> The added flag should not have any effect in debug mode.
>> 
>> Testing:
>> 
>> T1-5, with flag and without it. We want to check that this does not cause any test failures without the flag set, and no unexpected failures with it. Tests failing because of timeout or because an error is printed to output when compilation fails can be expected in some cases.
>
> src/hotspot/share/opto/compile.hpp line 831:
> 
>> 829: 
>> 830:   const CompilationFailureInfo* first_failure_details() const { return _first_failure_details; }
>> 831: 
> 
> - Why guarantees? Why not assert? Do we really want this stress code in release builds? 
> - If assert, the `skip` parameter can be DEBUG_ONLY. 
> - In any case, I would rename it since is not very clear without examining the source code now. We don't skip the error check, we override the random stress bailout check. E.g. something like `DEBUG_ONLY(bool no_stress_bailout)` ?

Enabling the stress code in debug builds too could work. I can give it a try, but it will require some  time for more testing.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19646#discussion_r1636674670


More information about the hotspot-compiler-dev mailing list