-
Notifications
You must be signed in to change notification settings - Fork 629
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[VPP-1962] vpp crashes when vxlan4-input decap-next-index set to ethernet-input #3424
Comments
Could that be fixed? |
Ed Warnicke I have reproduced the issue. Ethernet-input node checks the interface Mac address in ethernet_input_inline_dmac_check(). MAC address is not set for vxlan-tunnel interface(s) in VPP.
Thread 3 "vpp_wk_0" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fff54bfe700 (LWP 140168)] 0x00007ffff6e56b7b in ethernet_input_inline_dmac_check (hi=0x7fffb8132cc0, dmacs=0x7fffb9c1ff40, dmacs_bad=0x7fffb9c1ff3e "", n_packets=1, ei=0x0, have_sec_dmac=0 '\000') at /home/vpp/src/vnet/ethernet/node.c:695 695 u64 hwaddr = (*(u64 *) hi->hw_address) & DMAC_MASK; (gdb) bt #0 0x00007ffff6e56b7b in ethernet_input_inline_dmac_check (hi=0x7fffb8132cc0, dmacs=0x7fffb9c1ff40, dmacs_bad=0x7fffb9c1ff3e "", n_packets=1, ei=0x0, have_sec_dmac=0 '\000') at /home/vpp/src/vnet/ethernet/node.c:695 #1 0x00007ffff6e4fa0c in ethernet_input_inline (vm=0x7fffb7f40b00, node=0x7fffb9c80b40, from=0x7fffb8135c94, n_packets=1, variant=ETHERNET_INPUT_VARIANT_ETHERNET) at /home/vpp/src/vnet/ethernet/node.c:1588 #2 0x00007ffff6e4de9e in ethernet_input_node_fn_skx (vm=0x7fffb7f40b00, node=0x7fffb9c80b40, frame=0x7fffb8135c80) at /home/vpp/src/vnet/ethernet/node.c:1725 #3 0x00007ffff6b59536 in dispatch_node (vm=0x7fffb7f40b00, node=0x7fffb9c80b40, type=VLIB_NODE_TYPE_INTERNAL, dispatch_state=VLIB_NODE_STATE_POLLING, frame=0x7fffb8135c80, last_time_stamp=13267928507756) at /home/vpp/src/vlib/main.c:1194 #4 0x00007ffff6b5a027 in dispatch_pending_node (vm=0x7fffb7f40b00, pending_frame_index=6, last_time_stamp=13267928507756) at /home/vpp/src/vlib/main.c:1353 #5 0x00007ffff6b53bf0 in vlib_main_or_worker_loop (vm=0x7fffb7f40b00, is_main=0) at /home/vpp/src/vlib/main.c:1846 #6 0x00007ffff6b52f57 in vlib_worker_loop (vm=0x7fffb7f40b00) at /home/vpp/src/vlib/main.c:1980 #7 0x00007ffff6baaada in vlib_worker_thread_fn (arg=0x7fffb90af540) at /home/vpp/src/vlib/threads.c:1861 #8 0x00007ffff699ae64 in clib_calljmp () at /home/vpp/src/vppinfra/longjmp.S:123 #9 0x00007fff54bfdcd0 in ?? () #10 0x00007ffff6ba2c73 in vlib_worker_thread_bootstrap_fn (arg=0x7fffb90af540) at /home/vpp/src/vlib/threads.c:585 Backtrace stopped: previous frame inner to this frame (corrupt stack?) (gdb) f 0 #0 0x00007ffff6e56b7b in ethernet_input_inline_dmac_check (hi=0x7fffb8132cc0, dmacs=0x7fffb9c1ff40, dmacs_bad=0x7fffb9c1ff3e "", n_packets=1, ei=0x0, have_sec_dmac=0 '\000') at /home/vpp/src/vnet/ethernet/node.c:695 695 u64 hwaddr = (*(u64 *) hi->hw_address) & DMAC_MASK; (gdb) l 690 ethernet_input_inline_dmac_check (vnet_hw_interface_t * hi, 691 u64 * dmacs, u8 * dmacs_bad, 692 u32 n_packets, ethernet_interface_t * ei, 693 u8 have_sec_dmac) 694 { 695 u64 hwaddr = (*(u64 *) hi->hw_address) & DMAC_MASK; 696 u8 bad = 0; 697 698 dmacs_bad[0] = is_dmac_bad (dmacs[0], hwaddr); 699 dmacs_bad[1] = ((n_packets > 1) & is_dmac_bad (dmacs[1], hwaddr)); (gdb) p hi $1 = (vnet_hw_interface_t *) 0x7fffb8132cc0 (gdb) p *hi $2 = {cacheline0 = 0x7fffb8132cc0 "\220\353\025\270\377\177", name = 0x7fffb815eb90 "vxlan_tunnel0", flags = VNET_HW_INTERFACE_FLAG_LINK_UP, link_speed = 0, hw_address = 0x0, output_node_index = 615, tx_node_index = 0, dev_class_index = 30, dev_instance = 0, hw_class_index = 23, hw_instance = 0, hw_if_index = 3, sw_if_index = 3, output_node_next_index = 3, max_rate_bits_per_sec = 0, min_supported_packet_bytes = 0, max_supported_packet_bytes = 0, min_packet_bytes = 0, max_packet_bytes = 0, sub_interface_sw_if_index_by_id = 0x0, l2_if_count = 1, l3_if_count = 0, bond_info = 0x0, input_node_index = 0, input_node_thread_index_by_queue = 0x0, rx_mode_by_queue = 0x0, default_rx_mode = VNET_HW_INTERFACE_RX_MODE_POLLING, dq_runtime_index_by_queue = 0x0, numa_node = 0 '\000', rss_queues = 0x0, n_trace = 0, trace_classify_table_index = 4294967295} (gdb) p hi->hw_address $3 = (u8 *) 0x0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
Attempting to set the vxlan decap-next-index to ethernet-input using:
{{add_node_next node vxlan4-input next ethernet-input }}
vxlan_add_del_tunnel src 10.0.4.1 dst 10.0.6.1 decap-next 3 vni 9832580 instance -1
results in vpp crashing on the first packet received over the vxlan interface.
The resulting decoded backtrace is:
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007f7ec0f9a859 in __GI_abort () at abort.c:79
#2 0x0000555a8f691d9e in os_exit (code=code@entry=1) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vpp/vnet/main.c:395
#3 0x00007f7ec12e4736 in unix_signal_handler (signum=11, si=, uc=) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/unix/main.c:187
#4
#5 0x00007f7ec1418a49 in ethernet_input_inline (variant=ETHERNET_INPUT_VARIANT_ETHERNET, n_packets=, from=0x7f7e81923294, node=0x7f7e82638f00, vm=0x7f7ec1300540 <vlib_global_main>)
{{ at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vnet/ethernet/node.c:1581}}
#6 ethernet_input_node_fn_hsw (vm=0x7f7ec1300540 <vlib_global_main>, node=0x7f7e82638f00, frame=) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vnet/ethernet/node.c:1725
{{#7 0x00007f7ec129c28b in dispatch_node (last_time_stamp=, frame=0x7f7e81923280, dispatch_state=VLIB_NODE_STATE_POLLING, type=VLIB_NODE_TYPE_INTERNAL, node=, }}
{{ vm=0x7f7ec1300540 <vlib_global_main>) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/main.c:1194}}
#8 dispatch_pending_node (vm=vm@entry=0x7f7ec1300540 <vlib_global_main>, pending_frame_index=pending_frame_index@entry=14, last_time_stamp=)
{{ at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/main.c:1353}}
#9 0x00007f7ec12a0eb7 in vlib_main_or_worker_loop (is_main=1, vm=0x7f7ec1300540 <vlib_global_main>) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/main.c:1846
#10 vlib_main_loop (vm=0x7f7ec1300540 <vlib_global_main>) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/main.c:1974
#11 vlib_main (vm=, vm@entry=0x7f7ec1300540 <vlib_global_main>, input=input@entry=0x7f7e821b9fa0) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/main.c:2220
#12 0x00007f7ec12e370c in thread0 (arg=140182383756608) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/unix/main.c:660
#13 0x00007f7ec1191d90 in clib_calljmp () from /lib/x86_64-linux-gnu/libvppinfra.so.20.09
#14 0x00007fff4e7ba820 in ?? ()
#15 0x00007f7ec12e4c18 in vlib_unix_main (argc=, argv=) at /w/workspace/vpp-merge-2009-ubuntu2004-x86_64/src/vlib/unix/main.c:733
#16 0xba0f48028b4890f3 in ?? ()
#17 0xffea3ce9f47224e0 in ?? ()
#18 0x41660442b70f44ff in ?? ()
#19 0x0f200442f606e8c1 in ?? ()
#20 0x8f8b41fffff28185 in ?? ()
#21 0xffc2c74800000254 in ?? ()
Assignee
John Lo
Reporter
Ed Warnicke
Comments
Ethernet-input node checks the interface Mac address in ethernet_input_inline_dmac_check(). MAC address is not set for vxlan-tunnel interface(s) in VPP.
Original issue: https://jira.fd.io/browse/VPP-1962
The text was updated successfully, but these errors were encountered: