[erlang-questions] supervisor process not responding to messages ('EXIT', which_children, etc)

Garret Smith garret.smith@REDACTED
Wed Apr 28 01:46:14 CEST 2010


The results of 'erlang:process_info(Pid, backtrace)' below as you suggested.
It seems that the supervisor was trying to restart a child, the child took too
long to start so it was killed, but then the supervisor hung.
At this point, I can have the child start faster, but why is the
supervisor hung?

Thanks,
-Garret Smith

$Program counter: 0x00a55114 (proc_lib:sync_wait/2 + 28)
CP: 0x00000000 (invalid)
arity = 0
0x00b27d18 Return addr 0x00acbd9c (supervisor:do_start_child/2 + 156)
y(0) infinity
y(1) <0.2213.0>
0x00b27d24 Return addr 0x00ace9d4 (supervisor:restart/3 + 1772)
y(0) {child,<0.111.0>,set_supervisor,{set_supervisor,start_link,[]},permanent,1000,supervisor,[set_supervisor]}
y(1) {local,ac_supervisor}
y(2) Catch 0x00acbd9c (supervisor:do_start_child/2 + 156)
0x00b27d34 Return addr 0x00accf18 (supervisor:handle_info/2 + 76)
y(0) {state,{local,ac_supervisor},one_for_one,[{child,<0.117.0>,es_syncer,{es_syncer,start_link,[]},permanent,1000,worker,[es_syncer]},{child,<0.114.0>,algorithm_supervisor,{algorithm_supervisor,start_link,[]},permanent,1000,supervisor,[algorithm_supervisor]},{child,<0.111.0>,set_supervisor,{set_supervisor,start_link,[]},permanent,1000,supervisor,[set_supervisor]},{child,<0.104.0>,input_supervisor,{input_supervisor,start_link,[]},permanent,1000,supervisor,[input_supervisor]},{child,<0.101.0>,output_supervisor,{output_supervisor,start_link,[]},permanent,1000,supervisor,[output_supervisor]},{child,<0.98.0>,mbgw_supervisor,{mbgw_supervisor,start_link,[]},permanent,1000,supervisor,[mbgw_supervisor]}],{dict,0,16,16,8,80,48,{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}},2,3600,[{1272,125254,287042}],ac_supervisor,[]}
y(1) {child,<0.111.0>,set_supervisor,{set_supervisor,start_link,[]},permanent,1000,supervisor,[set_supervisor]}
y(2) {local,ac_supervisor}
0x00b27d44 Return addr 0x00a8b128 (gen_server:handle_msg/5 + 932)
0x00b27d48 Return addr 0x00a54ce0 (proc_lib:init_p_do_apply/3 + 28)
y(0) supervisor
y(1) {state,{local,ac_supervisor},one_for_one,[{child,<0.117.0>,es_syncer,{es_syncer,start_link,[]},permanent,1000,worker,[es_syncer]},{child,<0.114.0>,algorithm_supervisor,{algorithm_supervisor,start_link,[]},permanent,1000,supervisor,[algorithm_supervisor]},{child,<0.111.0>,set_supervisor,{set_supervisor,start_link,[]},permanent,1000,supervisor,[set_supervisor]},{child,<0.104.0>,input_supervisor,{input_supervisor,start_link,[]},permanent,1000,supervisor,[input_supervisor]},{child,<0.101.0>,output_supervisor,{output_supervisor,start_link,[]},permanent,1000,supervisor,[output_supervisor]},{child,<0.98.0>,mbgw_supervisor,{mbgw_supervisor,start_link,[]},permanent,1000,supervisor,[mbgw_supervisor]}],{dict,0,16,16,8,80,48,{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}},2,3600,[],ac_supervisor,[]}
y(2) ac_supervisor
y(3) <0.95.0>
y(4) {'EXIT',<0.111.0>,shutdown}
y(5) Catch 0x00a8b128 (gen_server:handle_msg/5 + 932)
0x00b27d64 Return addr 0x00773ea4 (<terminate process normally>)
y(0) Catch 0x00a54cf0 (proc_lib:init_p_do_apply/3 + 44)

On Tue, Apr 27, 2010 at 2:05 PM, Scott Lystig Fritchie
<fritchie@REDACTED> wrote:
> Garret Smith <garret.smith@REDACTED> wrote:
>
> gs> For comparison, I got the same info from a "non-hung" supervisor.
> gs> The biggest difference, besides the empty message queue, was that
> gs> current_function was {gen_server, loop, 6} instead of
> gs> {proc_lib,sync_wait,2}.  I found the same on another stalled
> gs> supervisor.
>
> Perhaps erlang:process_info(Pid, backtrace) or
> erlang:process_display(Pid, backtrace) would help figure out where the
> supervisor is hung.  My guess is that it's dealing with a previous
> failure and/or restart.
>
> -Scott
>


More information about the erlang-questions mailing list