Starting generic servers with proc_lib

Gunilla Arendt <>
Fri Aug 26 15:42:41 CEST 2005


I'm not sure I understand your question, but if you wonder how to get 
crash reports from a gen_server process, then the answer is that a 
gen_server automatically generates a crash report. But, the SASL event 
handler must be installed in the error_logger process, or the crash 
report is not printed to stdout.

That is: Either use the start_sasl boot script:

% erl -boot start_sasl

Or, start SASL from the Erlang shell:

1> application:start(sasl).

Or, install the event handler yourself:

1> error_logger:install_handler(sasl_report_tty_h, all).
ok
...

5> gen_server:cast(ab, error).
ok
=ERROR REPORT==== 26-Aug-2005::15:34:56 ===
** Generic server ab terminating
** Last message in was {'$gen_cast',error}
** When Server state == []
** Reason for termination ==
** bad

3>
=CRASH REPORT==== 26-Aug-2005::15:34:56 ===
   crasher:
     pid: <0.41.0>
     registered_name: ab
     error_info: bad
     initial_call: 
{gen,init_it,[gen_server,<0.39.0>,self,{local,ab},ab,[],[]]}
     ancestors: [<0.39.0>]
     messages: []
     links: []
     dictionary: []
     trap_exit: false
     status: running
     heap_size: 233
     stack_size: 21
     reductions: 120
   neighbours:

/ Gunilla

Benefits Dragon wrote:
> As part of a related topic ("Messages going missing in test suite"), I
> was wondering how you start_link generic servers with the proc_lib so
> I can get crash reports from them, the description says the proc_lib
> spawn and start functions are to replace the erl versions yet when you
> start a gen_server you don't use the erl version use call the
> gen_server module to do it. Can you still use the proc_lib module to
> start gen_servers?





More information about the erlang-questions mailing list