VPP version: stable/2310: 095a9530703a3239fa48da5ea4dd5354ba9aa92a
When I try to create host pair for capturing packets by TCPDUMP, VPP will `ABORT()` after disabling interface host-veth200。
The steps as follows:
# create veth100@veth200 on linux ip link add name veth100 type veth peer name veth200 ip link set veth100 up ip link set veth200 up # span to eth1(I renamed Gigabit... to eth1) vppctl create host-interface name veth200 vppctl set interface span eth1 destination host-veth200 both vppctl set int state host-veth200 up # tcpdump for capturing packets. tcpdump -ni veth100 # clear span vppctl set interface span eth1 disable vppctl set int state host-veth200 down
while I disabled interface host-veth200, VPP exited:
#0 0x00007f84a37ada7c in ?? () from target:/usr/lib64/libc.so.6 #1 0x00007f84a375fef6 in raise () from target:/usr/lib64/libc.so.6 #2 0x00007f84a374a2fc in abort () from target:/usr/lib64/libc.so.6 #3 0x0000563c4507b133 in os_panic () at /root/pkgmaker_sandbox/build/chengyan/ngrayvpp_v9.2310-rc22/src/vpp/vnet/main.c:421 #4 0x00007f84a3a0c7a9 in debugger () at /root/pkgmaker_sandbox/build/chengyan/ngrayvpp_v9.2310-rc22/src/vppinfra/error.c:84 #5 0x00007f84a3a0c560 in cliberror (how_to_die=2, function_name=0x0, line_number=0, fmt=0x7f84a3bc919c "%s:%d (%s) assertion `%s' fails") at /root/pkgmaker_sandbox/build/chengyan/ngrayvpp_v9.2310-rc22/src/vppinfra/error.c:143 #6 0x00007f84a3b28d44 in vlib_log (level=VLIB_LOG_LEVEL_NOTICE, class=1638400, fmt=0x7f846365a905 "fd %u %U") at /root/pkgmaker_sandbox/build/chengyan/ngrayvpp_v9.2310-rc22/src/vlib/log.c:131 #7 0x00007f8463642e95 in af_packet_fd_error (uf=0x7f8467a384b0) at /root/pkgmaker_sandbox/build/chengyan/ngrayvpp_v9.2310-rc22/src/plugins/af_packet/af_packet.c:125 #8 0x00007f84a3b8fdc4 in linux_epoll_input_inline ( vm=0x7f84679e9bc0, node=0x7f84679ec200, frame=0x0, thread_index=1) at /root/pkgmaker_sandbox/build/chengyan/ngrayvpp_v9.2310-rc22/src/vlib/unix/input.c:334
Afer some research, I found that `af_packet_fd_error` was using `vlib_log_notice` that can not be called in worker thread:
/* make sure we are running on the main thread to avoid use in dataplane code, for dataplane logging consider use of event-logger */
ASSERT (vlib_get_thread_index () == 0);
So Is there has some problem at `af_packet_fd_error`?