RFR: 8321400: java/foreign/TestStubAllocFailure.java fails with code cache exhaustion

Jorn Vernee jvernee at openjdk.org
Tue Dec 12 14:26:25 UTC 2023


On Tue, 12 Dec 2023 12:09:50 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> Improve the test by being more lenient to related code cache exhaustion errors. The important thing is that we don't terminate with a fatal error, which the new code now checks for explicitly. The check for that is based on what is done by `./test/hotspot/jtreg/runtime/ErrorHandling/HsErrFileUtils.java` .
>> 
>> The existing `UpcallTestHelper.Output` class that was previously used to assert on stdout/stderr contents did not have the capability to look for patterns in the output. So, I've taken the opportunity to replace it with the more canonical `OutputAnalyzer` which comes from the test library.
>> 
>> Finally, I've also added back the test for downcall stub allocation failure which was removed as part of the initial patch because it was too inconsistent [1]. With the now approach, it should pass reliably as well.
>> 
>> Testing: `jdk_foreign`  suite (which contains all the affected tests)
>> 
>> [1]: https://github.com/openjdk/jdk/pull/16311/commits/9a1360598a91871ce6ec48330849c0e4e0279c64
>
> test/lib/jdk/test/lib/process/OutputAnalyzer.java line 870:
> 
>> 868:      * Assert that we did not crash with a hard VM error (generating an hs_err_pidXXX.log)
>> 869:      */
>> 870:     public void shouldNotHaveFatalError() {
> 
> Looking at the usages, I wonder if this should be `checkFatalError(boolean)` and, similarly, for the exit value `checkExitValue(int value)` ?

Are you suggesting to rename the existing methods? I don't see `checkExistValue(int value)` in `OutputAnalyzer`. The existing method naming pattern for the assertions is always `should(Not)XXX` though, so that's what I followed here.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17056#discussion_r1424066457


More information about the core-libs-dev mailing list