[jdk17] RFR: 8269568: JVM crashes when running VectorMask query tests

Paul Sandoz psandoz at openjdk.java.net
Tue Jun 29 16:34:03 UTC 2021


On Tue, 29 Jun 2021 08:56:44 GMT, Xiaohong Gong <xgong at openjdk.org> wrote:

> This is a follow-up patch for [1]. When we are trying to add the VectorMask query implementation for Arm NEON, we found the jtreg tests for `VectorMask.trueCount/firstTrue/lastTrue` is not effective. The tests failure cannot be reported as expected. The main reason is that the Vector API methods are not hot enough to be compiled by C2 compiler. Wrap the main test codes inside a loop can make the tests effective.
> 
> With the tests taking effect, we can see a JVM crash due to the following assertion:
> 
>   vector/src/hotspot/share/opto/vectornode.hpp:879), pid=168241, tid=168257
>   # Error: assert(mask->Opcode() == Op_VectorStoreMask) failed
> 
> The mask input might be other vector nodes like `"LoadVectorNode"`, since there is an optimization for `"VectorStoreMask"`:
> 
>   VectorStoreMask (VectorLoadMask value) ==> value
> 
> Changing the code to check whether its element basic type is `"T_BOOLEAN"` is more reasonable.
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8256973

IIRC we wrote them as smoke tests because they were not intrinsic. We need to think more carefully about converting them from smoke tests.

Ideally we should convert them to kernel tests, but that is more work. Instead we can copy the generated pattern and do the following:

- move the assertion outside of the loops (it will generate garbage with string concatenation)
- assert over arrays, thereby also moving the actual scalar computation result outside the loops. The simplest approach is to create an `int[] array` of the same length as the input and write the reduced result at index `i`. Thus it's sparse.

That should result in an inner loop body that is very focused on exercising the intrinsic method. It will also likely reduce the test execution times.

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

PR: https://git.openjdk.java.net/jdk17/pull/168


More information about the hotspot-compiler-dev mailing list