<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Nice ! ;-)<div><br></div><div>Same problem with gen_tcp ! </div><div>You can use inet:i() to verify that even Erlang knows about the problem :-)</div><div><br></div><div>I see the problem.  inet:udp/tcp_controlling_process unlinks from the socket without </div><div>checking that it is already the controlling process, effectively creating a zombie port.</div><div><br></div><div>Work around: Do not change the controlling process to it self.</div><div><br></div><div>/Tony</div><div><br></div><div><br><div><div>On 27 apr 2011, at 19.05, Max Lapshin wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Open UDP port<br><br>$ erl<br>Erlang R14B02 (erts-5.8.3) [source] [64-bit] [smp:4:4] [rq:4]<br>[async-threads:0] [hipe] [kernel-poll:false]<br><br>Eshell V5.8.3  (abort with ^G)<br>1> {ok,Port} = gen_udp:open(9000, [binary]).<br>{ok,#Port<0.576>}<br><br>$ lsof -nP -i|grep beam|grep UDP<br>beam.smp  10912  max   11u  IPv4 0x089073c4      0t0  UDP *:9000<br><br><br><br>Simulate error:<br>2> a=b.<br>** exception error: no match of right hand side value b<br><br>All ports are closed.<br><br>$ lsof -nP -i|grep beam|grep UDP<br>$<br><br><br>Now add controlling_process:<br><br>4> {ok,Port} = gen_udp:open(9000, [binary]).<br>{ok,#Port<0.587>}<br>5> gen_udp:controlling_process(Port, self()).<br>ok<br>6> a=b.<br>** exception error: no match of right hand side value b<br><br>Voila: port is not closed<br><br>lsof -nP -i|grep beam|grep UDP<br>beam.smp  10912  max   11u  IPv4 0x089073c4      0t0  UDP *:9000<br><br><br>Where is it? To which process belongs it now and when will it be closed?<br>_______________________________________________<br>erlang-questions mailing list<br><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>http://erlang.org/mailman/listinfo/erlang-questions<br></div></blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "><i>"Have run Make so many times I dunno what's installed anymore"</i></span></div></span></span>
</div>
<br></div></body></html>