RFR: 8263164: assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector while calling StoreVectorNode::memory_size()
Xiaohong Gong
xgong at openjdk.java.net
Thu Mar 11 03:02:10 UTC 2021
On Thu, 11 Mar 2021 02:32:04 GMT, Xiaohong Gong <xgong at openjdk.org> wrote:
>> Hi all,
>>
>> Several Vector API tests failed intermittently due to this assert.
>>
>> #
>> # Internal Error (/home/jvm/jdk/src/hotspot/share/opto/type.hpp:1686), pid=10561, tid=10577
>> # assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector
>> #
>> # JRE version: OpenJDK Runtime Environment (17.0) (fastdebug build 17-internal+0-adhoc..jdk)
>> # Java VM: OpenJDK 64-Bit Server VM (fastdebug 17-internal+0-adhoc..jdk, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
>> # Problematic frame:
>> # V [libjvm.so+0x918f44] StoreVectorNode::memory_size() const+0xb4
>>
>> The reason is that StoreVectorNode::memory_size() will fail if StoreVectorNode->in(MemNode::ValueIn)->bottom_type() == Type::TOP.
>> However, this case seems possible during C2's optimization.
>> And the same bug exists for LoadVectorNode::memory_size() as well.
>>
>> The fix returns 0 if StoreVectorNode->in(MemNode::ValueIn)->bottom_type() is not a vector type.
>>
>> Testing:
>> - jdk/incubator/vector
>> - tier1~tier3
>>
>> Any comments?
>>
>> Thanks.
>> Best regards,
>> Jie
>
> src/hotspot/share/opto/vectornode.hpp line 766:
>
>> 764: virtual int memory_size() const {
>> 765: if (in(MemNode::ValueIn)->bottom_type()->isa_vect() != NULL) {
>> 766: return vect_type()->length_in_bytes();
>
> The same issue also exists when method `"vect_type()"` (line 757) is called directly, doesn't it?
All codes that calles `vect_type()` in `StoreVectorNode` met the same issue. And I think it's better to make sure the `in(MemNode::ValueIn)->bottom_type()` is a `TypeVect`. We need to fix the issues that make it not the right type, doesn't it?
-------------
PR: https://git.openjdk.java.net/jdk/pull/2867
More information about the hotspot-compiler-dev
mailing list