Vector API: Crashes due to VectorBoxNode->is_CFG() == false
Lupusoru, Razvan A
razvan.a.lupusoru at intel.com
Tue Nov 28 16:08:54 UTC 2017
Hi Vladimir,
Can you please try to sync to latest code base? It should actually in fact be marked as being a CFG node as of a patch I pushed last Wednesday. You are right - it was incorrect due to fact that I did use the control projection from VectorBox.
And Paul, I will try the MismatchTest later today when I get in the office and figure out what is going on.
--Razvan
-----Original Message-----
From: Paul Sandoz [mailto:paul.sandoz at oracle.com]
Sent: Monday, November 27, 2017 6:52 PM
To: Vladimir Ivanov <vladimir.x.ivanov at oracle.com>
Cc: Lupusoru, Razvan A <razvan.a.lupusoru at intel.com>; panama-dev at openjdk.java.net
Subject: Re: Vector API: Crashes due to VectorBoxNode->is_CFG() == false
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:84
> 6), 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