The missing UDP packets

Alexander Petrovsky askjuise@REDACTED
Tue Feb 4 09:31:51 CET 2020


Hello!

The first of all, my erlang version OTP-21.3 (without any minor patches)

I've got the strange floating problem with UDP to receive, which I couldn't
debug by myself. Let me describe briefly what I have: There is UDP socket
which used for send packets to many peers and receives responses from them
(rate ~1pps):

send request: SIP options
receive a response: 100
receive a response: 200

In erlang it's implemented like gen_server which receives messages, the
sockets options are: binary, {active, once}.

Every time, when the message is received from the mailbox, code try to do
some job, after that try to handle message bursts by calling in the loop
(by example 5 times):
gen_udp:recv(Socket, 0, 0), bursts and after that set the socket
option {active,
once} back.

So, here I'm observing floating strange behavior, from time to time the
second!! and always the second!! response is absent. I see this UDP missing
packets in tcpdump, I don't see any drops in UDP stack at all.

When I'm trying to add some logs into my erlang code, the problem
disappears, when I'm run strace to recvfrom syscall the problem
disappears... I't try to debug VM with gdb and make some breakpoints on
sock_recvfrom in inet_drv.c (it's OTP-21.3), but the problem disappears (((

I can't find the problem root cause, is it in my code or is it in VM? Maybe
someone could help me with that?

-- 
Петровский Александр / Alexander Petrovsky,

Skype: askjuise
Phone: +7 931 9877991
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20200204/f66e4726/attachment.htm>


More information about the erlang-questions mailing list