Closed byteocean closed 2 months ago
We found out that flow_value->ref_count->release
is NULL.
I suspect the problem is a possible double free of flows (once on LB destroy other one on aging). If you comment out dp_grpc_impl.c:150:dp_remove_lbtarget_flows(&ipv6);
the problem stopped.
Because by using dp_ref
references, the handler for flows is dp_free_flow()
which calls rte_free()
that actually memsets the memory to zero, which i think is the source of NULL in ref->release
.
I have created a validation commit in https://github.com/ironcore-dev/dpservice/tree/fix/refcount that actually randomly fires on my machine.
dpservice local test fails on one of the dell machines (dell-3). The GDB shows the following error stack trace:
After a debugging session with @PlagueCZ, it is found out that swapping the order of
union dp_ipv6 underlay_dst
anduint8_t l4_type
or makestruct flow_nf_info
packed can eliminate this error. The root cause still needs to be investigated.