-
Notifications
You must be signed in to change notification settings - Fork 29
Description
Subject
Issue type
- Bug report
Configuration:
- Product version
3.0.2 - OS
Ubuntu 22.04 - OFED
- Hardware
BF2 with DOCA 2.0.2
Actual behavior:
libxlio crashes
src ip is configured after load and before connect.
local array ip_arr[0] is accessed while empty (src_addr_selector.cpp:248).
stack trace:
(gdb) bt
#0 src_addr_selector::ipv4_select_saddr (flags=0 '\000', dst_addr=..., dst_dev=...) at dev/src_addr_selector.cpp:248
#1 src_addr_selector::select_ip_src_addr (dst_dev=..., dst_addr=..., flags=flags@entry=0 '\000', family=2) at dev/src_addr_selector.cpp:195
#2 0x0000ffff8815df9c in neigh_entry::neigh_entry (this=this@entry=0xaaaafe5e4010, key=..., _type=_type@entry=XLIO_TRANSPORT_ETH,
is_init_resources=is_init_resources@entry=true) at ../../src/core/util/ip_address.h:323
#3 0x0000ffff88161ce4 in neigh_eth::neigh_eth (this=0xaaaafe5e4010, key=...) at proto/neighbour.cpp:1413
#4 0x0000ffff88163bd4 in neigh_table_mgr::create_new_entry (this=, neigh_key=..., new_observer=)
at proto/neighbour_table_mgr.cpp:119
#5 0x0000ffff88165728 in cache_table_mgr<neigh_key, neigh_val*>::register_observer (this=0xffff80001e80, key=..., new_observer=0xaaaafe495ae0,
cache_entry=0xffffec43cd40) at ../../src/core/infra/cache_subject_observer.h:253
#6 0x0000ffff8817b838 in dst_entry::resolve_neigh (this=0xaaaafe495ae0) at proto/dst_entry.cpp:351
#7 0x0000ffff8817c5e0 in dst_entry::prepare_to_send (this=0xaaaafe495ae0, rate_limit=..., skip_rules=, is_connect=)
at proto/dst_entry.cpp:554
#8 0x0000ffff881a620c in sockinfo_tcp::prepare_dst_to_send (this=0xaaaafe494f30, is_accepted_socket=) at sock/sockinfo_tcp.cpp:706
#9 0x0000ffff881ab9ec in sockinfo_tcp::connect (this=0xaaaafe494f30, __to=0xaaaafe3221e0, __tolen=16) at sock/sockinfo_tcp.cpp:2360
#10 0x0000ffff881c1af8 in connect (__fd=683, __to=0xaaaafe3221e0, __tolen=16) at sock/sock-redirect.cpp:842
#11 0x0000aaaac531f2bc in posix_sock_create (ip=0xaaaafe490a74 "30.20.20.20", port=4420, type=SPDK_SOCK_CREATE_CONNECT, opts=0xffffec43d5d8, enable_ssl=false)
at posix.c:935
#12 0x0000aaaac531f684 in posix_sock_connect (ip=0xaaaafe490a74 "30.20.20.20", port=4420, opts=0xffffec43d5d8) at posix.c:1012
(gdb) p ip_arr
$2 = std::vector of length 0, capacity 0
Expected behavior:
successful connect
Steps to reproduce:
- load the module while there is no ipv4 configured on the local (source) machine
- Configure ipv4 address on the local machine
- Try to connect