gen_udp:send/4

Steven mailparmalat@REDACTED
Thu Dec 5 17:39:06 CET 2019


Hi,

We have a situation where gen_udp:send/4 does not return ok and it just
hangs and the process is waiting indefinitely.

e.g.
 {current_function,{prim_inet,sendto,4}},
 {initial_call,{proc_lib,init_p,5}},
 {status,running},
 {message_queue_len,15363062},

The send buffer size on the socket is around 200KB.

3> inet:getopts(S, [sndbuf]).
{ok,[{sndbuf,212992}]}

The UDP socket doesn't receive any incoming packets so it is used for
sending only. Running R21-3 with redhat 7.5. Would like to ask the group
under which conditions will the port not come back with inet_reply? I
assume if the sndbuf is full then it should come back with enobufs or some
sort but it should be quick enough to flush the sndbuf to interface.

In prim_inet:sendTo/4, it always expect inet reply from OS but it never
comes and never times out.

try erlang:port_command(S, PortCommandData) of
                        true ->
                            receive
                                {inet_reply,S,Reply} ->
                                    ?DBG_FORMAT(
                                       "prim_inet:sendto() -> ~p~n",
[Reply]),
                                    Reply
                            end
                    catch

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20191205/d1b70369/attachment.htm>


More information about the erlang-questions mailing list