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