RFR: 8283643: [AIX, testbug] MachCodeFramesInErrorFile test fails to find 'Native frames' text [v5]

Doug Simon dnsimon at openjdk.java.net
Wed Apr 20 19:12:30 UTC 2022


On Wed, 20 Apr 2022 17:39:16 GMT, Tyler Steele <duke at openjdk.java.net> wrote:

>> I observed a failure of MachCodeFramesInErrorFile.java on AIX. The raised error complains that 'Native frames: ' is missing. To fix the failure, I made two changes to the test that allowed it to pass on AIX.
>> 
>> The first change made was to the test's `extractFrames` method. AIX overrides `os::platform_print_native_stack` with stack printing specific to AIX/Power. This code does not produce the 'Native frames: ' text that `vmError::print_native_stack` does, so the test was modified to expect the AIX output when run on AIX. [Edit: The changes made to `extractFrames` are now minimal. I made the change to `AixNativeCallstack::print_callstack_for_context` instead.]
>> 
>> A second change was made to the address passed to the `crashInNative1` method. AIX does not consider low-address memory to be protected as other platforms do. In fact, "the first 256 bytes are reserved for software use" according to the Power ISA. Accordingly, the read address for PPC was changed to -1 (0xFF..FF) to produce the expected failure result.
>> 
>> ### Testing
>> 
>> Tier1 tests complete as expected on AIX/Power.
>
> Tyler Steele has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Revert "Test: Sample error with no printing should print hs_err output"
>    
>    This reverts commit 6c70a45d862c1aa26d9c4d585bf8ecd39892e3bb.
>  - Adds logging to stdout/stderr to prevent too-long Exception messages.

test/hotspot/jtreg/runtime/ErrorHandling/MachCodeFramesInErrorFile.java line 133:

> 131:             System.out.println("stdout:\n" + output.getStdout());
> 132:             System.err.println("stderr:\n" + output.getStderr());
> 133:             throw new RuntimeException("Did not find hs_err_pid file in output");

Why this change (and a similar one at the end of the file)? This separates the reporting of a failed condition (i.e., could not find expected patten in output) from the context (i.e. contents of stderr and stdout) that assists in diagnosing why the condition may have failed.

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

PR: https://git.openjdk.java.net/jdk/pull/8094


More information about the hotspot-runtime-dev mailing list