Vector API: Crashes due to VectorBoxNode->is_CFG() == false
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Tue Nov 28 20:43:15 UTC 2017
Thanks, Razvan! Missed that change.
Best regards,
Vladimir Ivanov
On 11/28/17 7:08 PM, Lupusoru, Razvan A wrote:
> 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