[erlang-questions] gen_server doesn't respond

Robert Virding <>
Wed Jun 5 22:48:53 CEST 2013


Funny discussion this. In this case I think Dmitry hit the nail on the head when he said that 

{current_function,{ gen,do_call,4 }} 

exactly describes what your problem is. The gen_server is suspended waiting in a gen_server:call to another server which is not replying. (gen_server:call -> gen:call/4 -> gen:do_call/4) With a little basic tracing (sys:trace) you should be able to work out where/why the server is calling another server and why it is hanging. 

Robert 

----- Original Message -----

> From: "Dmitry Kolesnikov" <>
> To: "Sungjin Park" <>
> Cc: "erlang-questions" <>
> Sent: Tuesday, 4 June, 2013 10:45:40 AM
> Subject: Re: [erlang-questions] gen_server doesn't respond

> Hello,

> > {current_function,{ gen,do_call,4 }}
> 
> Your process made a call to another process with infinite timeout.

> The process do not respond because you got a deadlock.
> You have to check:
> * no circular dependencies on process call
> * the parent supervisor is not called from process init
> * no infinite gen_server:call is used at your api.

> - Dmitry

> On Jun 4, 2013, at 4:54 AM, "Park, Sungjin" <  >
> wrote:

> > Shell input/output logs below.
> 

> > ============================
> 
> > 4> process_info(pid(0,453,4757)).
> 

> > [{current_function,{ gen,do_call,4 }},
> 
> > {initial_call,{proc_lib,init_p,5}},
> 
> > {status, waiting },
> 
> > {message_queue_len,1},
> 
> > {messages,[ {'$gen_call',{<0.26172.4841>,
> 
> > #Ref<0.0.2946.93178>},
> 
> > state} ]},
> 
> > {links,[<0.25337.4839>]},
> 
> > {dictionary,[{'$ancestors',[<0.452.4757>,<0.424.0>,
> 
> > <0.423.0>,ranch_sup,<0.420.0>]},
> 
> > {'$initial_call',{my_session,init,1}}]},
> 
> > {trap_exit,true},
> 
> > {error_handler,error_handler},
> 
> > {priority,normal},
> 
> > {group_leader,<0.419.0>},
> 
> > {total_heap_size,1364},
> 
> > {heap_size,987},
> 
> > {stack_size,32},
> 
> > {reductions,1487},
> 
> > {garbage_collection,[{min_bin_vheap_size,46368},
> 
> > {min_heap_size,233},
> 
> > {fullsweep_after,65535},
> 
> > {minor_gcs,8}]},
> 
> > {suspending,[]}]
> 
> > =============================
> 

> > As you can see the process has a message {..., state} in it's
> > message
> > queue but still in waiting state. It doesn't respond to
> > gen_server:call(Pid, state) from this point on. The process_info
> > shows that the process is now in gen:do_call/4 which is not under
> > my
> > control. The module has all the fallback handlers for
> > handle_call/3,
> > handle_cast/2, handle_info/2 etc, so that every message be matched.
> > There are a couple of places in my project where gen_server:call/2
> > used against this process. I suppose that the calls should timeout
> > in 5 sec by default as is stated in the gen_server specification.
> > So
> > there should be no such case that the process stuck indefinitely.
> 

> > On Mon, Jun 3, 2013 at 7:39 PM, Aaron France <
> >  > wrote:
> 

> > > Does it make any synchronous calls to other gen_servers?
> > 
> 

> > > On Mon, Jun 3, 2013 at 12:34 PM, Tim Watson <
> > >  > wrote:
> > 
> 

> > > > Does the callback module execute any selective receives inside
> > > > handlers perhaps? If not, are you sure the message has actually
> > > > arrived in that process' mailbox, can you see unhandled
> > > > messages
> > > > in
> > > > the message queue (I.e., length > 0 whilst waiting)?
> > > 
> > 
> 

> > > > On 3 Jun 2013, at 10:34, "Park, Sungjin" < 
> > > > >
> > > > wrote:
> > > 
> > 
> 

> > > > > Guys,
> > > 
> > 
> 
> > > > >
> > > 
> > 
> 
> > > > > I'm encountering cases when gen_server doesn't respond.
> > > 
> > 
> 
> > > > > In such cases, erlang:process_info/1 shows the process state
> > > > > 'waiting' with some messages in the message_queue. The
> > > > > messages
> > > > > have not been consumed for tens of minutes at least. Anybody
> > > > > has
> > > > > any idean about this?
> > > 
> > 
> 
> > > > >
> > > 
> > 
> 
> > > > >
> > > 
> > 
> 
> > > > > --
> > > 
> > 
> 
> > > > > Park, Sungjin
> > > 
> > 
> 
> > > > > -------------------------------------------------------------------------------------------------------------------
> > > 
> > 
> 
> > > > > Peculiar travel suggestions are dancing lessons from god.
> > > 
> > 
> 
> > > > > -- The Books of Bokonon
> > > 
> > 
> 
> > > > > -------------------------------------------------------------------------------------------------------------------
> > > 
> > 
> 
> > > > > _______________________________________________
> > > 
> > 
> 
> > > > > erlang-questions mailing list
> > > 
> > 
> 
> > > > > 
> > > 
> > 
> 
> > > > > http://erlang.org/mailman/listinfo/erlang-questions
> > > 
> > 
> 
> > > > _______________________________________________
> > > 
> > 
> 
> > > > erlang-questions mailing list
> > > 
> > 
> 
> > > > 
> > > 
> > 
> 
> > > > http://erlang.org/mailman/listinfo/erlang-questions
> > > 
> > 
> 

> > --
> 
> > Park, Sungjin
> 
> > -------------------------------------------------------------------------------------------------------------------
> 
> > Peculiar travel suggestions are dancing lessons from god.
> 
> > -- The Books of Bokonon
> 
> > -------------------------------------------------------------------------------------------------------------------
> > _______________________________________________
> 
> > erlang-questions mailing list
> 
> > 
> 
> > http://erlang.org/mailman/listinfo/erlang-questions
> 

> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130605/ad2f4856/attachment.html>


More information about the erlang-questions mailing list