Open plaublin opened 2 years ago
Hi. After more investigation the problem is related to the two processes (parent + child) not waiting correctly on each others. I didn't find a beautiful fix for now, but here is the fix with a 5sec sleep in the child.
For fun I have also bumped the DPDK version and created Rust bindings to UDPDK here.
Hi @plaublin, thanks for the fix and the Rust bindings, awesome work!
I will try to test the changes as soon as I get hardware to do it :)
Hello
Thank you for having developed and open-sourced UDPDK.
When I execute the pingpong application, the call to
rte_eth_tx_burst()
inudpdk_poller.c:flush_tx_table()
is stuck. As a result no message is sent over the network. Strangely, when executing the application with gdb, adding a breakpoint torte_eth_tx_burst()
, and issuingnext
commands, the packet is sent over the network and correctly received by the other endpoint. This suggests to me there is a data race somewhere in the code.I had to make a few small changes to the code and compilation process to fit with my environment (AMD EPYC 7543 and Mellanox ConnectX-6 Dx) that you can find here. However they should not impact the code in any negative way.
By any chance, would you have any pointers or ideas on the problem origin and/or how to debug it?