Vector API: Crashes due to VectorBoxNode->is_CFG() == false

Paul Sandoz paul.sandoz at oracle.com
Tue Nov 28 02:51:47 UTC 2017


I am also observing a crash in test/jdk/incubator/vector/MismatchTest.java which may be related:

V  [libjvm.dylib+0x716f3b]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x41f
V  [libjvm.dylib+0x7175ea]  VMError::report_and_die(Thread*, char const*, int, char const*, char const*, __va_list_tag*)+0x4a
V  [libjvm.dylib+0x26f47c]  report_vm_error(char const*, int, char const*, char const*, ...)+0xbd
V  [libjvm.dylib+0x6b82]  Matcher::vector_width_in_bytes(BasicType)+0x7c
V  [libjvm.dylib+0x6be5]  Matcher::max_vector_size(BasicType)+0xd
V  [libjvm.dylib+0x4b0dd1]  Matcher::vector_size_supported(BasicType, int)+0x11
V  [libjvm.dylib+0x4992c9]  LibraryCallKit::inline_vector_operation(vmIntrinsics::ID)+0x61
V  [libjvm.dylib+0x4980ec]  LibraryCallKit::try_to_inline(int)+0x52
V  [libjvm.dylib+0x497ed8]  LibraryIntrinsic::generate(JVMState*)+0x76
V  [libjvm.dylib+0x1bc4ca]  LateInlineCallGenerator::do_late_inline()+0x386

(I did not run a fastdebug build…)

Paul.

> On 27 Nov 2017, at 08:39, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
> 
> Hi,
> 
> While experimenting with Vector API I observed different crashes (e.g., [1] [2]) caused by VectorBoxNode being marked as non-CFG node.
> 
> hotspot/src/share/vm/opto/vectornode.hpp:
> class VectorBoxNode : public CallNode {
> ...
>  virtual       bool  is_CFG() const { return false; }
> 
> The problem is LibraryCallKit::wrapWithVectorBox() uses control produced by freshly allocated VectorBoxNode. So, other nodes can use it later as a control input and it breaks different assumptions in the compiler.
> 
> Razvan, what was the motivation to mark VectorBoxNode as non-CFG in the first place?
> 
> Best regards,
> Vladimir Ivanov
> 
> [1]
> #  Internal Error (/Users/vlivanov/ws/jdk/panama/hotspot/src/share/vm/opto/phaseX.cpp:846), pid=20349, tid=22019
> #  assert(d->is_CFG() && n->is_CFG()) failed: must have CFG nodes
> 
> PhaseGVN::is_dominator_helper(Node*, Node*, bool)+0xc0
> PhaseIterGVN::is_dominator(Node*, Node*)+0x32
> ConstraintCastNode::dominating_cast(PhaseTransform*) const+0x1ef
> CheckCastPPNode::Identity(PhaseGVN*)+0x27
> PhaseIterGVN::transform_old(Node*)+0x5df
> PhaseIterGVN::optimize()+0x14e
> Compile::inline_incrementally(PhaseIterGVN&)+0x274
> Compile::Optimize()+0x1bc
> ...
> 
> [2]
> #  Internal Error (/Users/vlivanov/ws/jdk/panama/hotspot/src/share/vm/opto/loopnode.cpp:3078), pid=21680, tid=22019
> #  assert(!is_visited) failed: visit only once
> 
> PhaseIdealLoop::build_loop_early(VectorSet&, Node_List&, Node_Stack&)+0x349
> PhaseIdealLoop::build_and_optimize(bool, bool)+0x7e1
> PhaseIdealLoop::PhaseIdealLoop(PhaseIterGVN&, bool, bool)+0xc0
> PhaseIdealLoop::PhaseIdealLoop(PhaseIterGVN&, bool, bool)+0x43
> Compile::Optimize()+0x7ed
> ...



More information about the panama-dev mailing list