[erlang-bugs] net_kernel hang, perhaps blocked by busy_dist_port race?

Scott Lystig Fritchie fritchie@REDACTED
Sun May 16 02:07:01 CEST 2010


Following up on my previous message ... I've been able to duplicate
this bug, whee!  I'm going to try to create a mostly-automatable recipe
to make it easier for others to try to reproduce.

-Scott

Got msg {monitor,<0.21.0>,busy_dist_port,#Port<0.547>}
Got msg {monitor,<0.40.0>,busy_dist_port,#Port<0.547>}
Got msg {monitor,<0.40.0>,busy_dist_port,#Port<0.547>}
Got msg {monitor,<0.21.0>,busy_dist_port,#Port<0.547>}
Got msg {nodedown,goofus@REDACTED,
                  [{nodedown_reason,connection_closed},{node_type,visible}]}

User switch command
 --> s
 --> c
Eshell V5.7.5  (abort with ^G)
(bar@REDACTED)1> whereis(net_kernel).
<0.21.0>

(bar@REDACTED)2> process_info(whereis(net_kernel)).
[{registered_name,net_kernel},
 {current_function,{erlang,bif_return_trap,1}},
 {initial_call,{proc_lib,init_p,5}},
 {status,suspended},
 {message_queue_len,147},
 {messages,[tick,tick,tick,tick,
            {'EXIT',<0.57.0>,connection_closed},
            tick,tick,tick,tick,tick,tick,
            {accept,<0.22.0>,#Port<0.549>,inet,tcp},
            tick,tick,tick,tick,tick,tick,tick,tick,tick|...]},
 {links,[<0.23.0>,<0.75.0>,<0.18.0>,<0.22.0>,#Port<0.62>]},
 {dictionary,[{'$ancestors',[net_sup,kernel_sup,<0.9.0>]},
              {longnames,false},
              {'$initial_call',{net_kernel,init,1}}]},
 {trap_exit,true},
 {error_handler,error_handler},
 {priority,max},
 {group_leader,<0.8.0>},
 {total_heap_size,1974},
 {heap_size,1597},
 {stack_size,12},
 {reductions,502181},
 {garbage_collection,[{min_bin_vheap_size,46368},
                      {min_heap_size,233},
                      {fullsweep_after,65535},
                      {minor_gcs,825}]},
 {suspending,[]}]

(bar@REDACTED)3> Bt1 = process_info(whereis(net_kernel), backtrace).
<<"...">>

(bar@REDACTED)6> io:format("~s\n", [element(2,Bt1)]).     
Program counter: 0x08243388 (unknown function)
CP: 0xb76cd7b4 (gen_server:reply/2 + 104)
arity = 1
   {#Ref<6666.0.0.35773>,yes}

0xb48893ec Return addr 0xb76cf9f4 (gen_server:handle_msg/5 + 424)
y(0)     Catch 0xb76cd7b4 (gen_server:reply/2 + 104)

0xb48893f4 Return addr 0xb76a5258 (proc_lib:init_p_do_apply/3 + 28)
y(0)     net_kernel
y(1)     []
y(2)     net_kernel
y(3)     <0.18.0>
y(4)     []
y(5)     []
y(6)     {state,bar,'bar@REDACTED',shortnames,{tick,<0.23.0>,5000},7000,sys_dist,[{<0.75.0>,'foo@REDACTED'},{<0.57.0>,'goofus@REDACTED'}],[],[{listen,#Port<0.62>,<0.22.0>,{net_address,{{0,0,0,0},48326},"bb3",tcp,inet},inet_tcp_dist}],[],0,all}

0xb4889414 Return addr 0x0824852c (<terminate process normally>)
y(0)     Catch 0xb76a5268 (proc_lib:init_p_do_apply/3 + 44)

ok


More information about the erlang-bugs mailing list