RFR: 8263164: assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector while calling StoreVectorNode::memory_size()

Jie Fu jiefu at openjdk.java.net
Mon Mar 8 06:31:12 UTC 2021


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

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

Commit messages:
 - 8263164: assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector while calling StoreVectorNode::memory_size()

Changes: https://git.openjdk.java.net/jdk/pull/2867/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2867&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8263164
  Stats: 18 lines in 1 file changed: 16 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2867.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2867/head:pull/2867

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


More information about the hotspot-compiler-dev mailing list