About the Handler in gen_event

Ulf Wiger <>
Mon Feb 24 14:25:35 CET 2003


I will help you a little bit with the debugging, but I will
leave some things for you to sort out. ;-)

(Actually, Sean already pointed out the errors...)

First, I compiled your module, and ran the start_link()

4> test_gen_event:start_link().

 add_handler success ok

(The printout above really only says that the init function
was called. The printout lacked a newline, so the 'ok' at
the end is the return value from the test() function. You
have no real confirmation that things went well.)

5> regs().

** Registered procs on node  **
Name                  Pid          Initial Call
Reds Msgs
alarm_handler         <0.33.0>  {gen_event,init_it,6} ...
application_controlle <0.5.0>   {application_controller,i...
code_server           <0.17.0>  {code_server,init,1} ...
erl_prim_loader       <0.2.0>   {erlang,apply,2} ...
error_logger          <0.4.0>   {gen_event,init_it,6} ...
event_mgr             <0.48.0>  {gen_event,init_it,6} ...
^^^^^^^^^  (that is, your process did indeed start)
file_server           <0.16.0>  {erlang,apply,2} ...
file_server_2         <0.15.0>  {file_server,init,1} ...
global_group          <0.14.0>  {global_group,init,1} ...
global_name_server    <0.11.0>  {global,init,1} ...
inet_db               <0.13.0>  {inet_db,init,1} ...
init                  <0.0.0>   {otp_ring0,start,2} ...
kernel_safe_sup       <0.24.0>  {supervisor,kernel,1} ...
kernel_sup            <0.9.0>   {supervisor,kernel,1} ...
overload              <0.34.0>  {overload,init,1} ...
release_handler       <0.35.0>  {release_handler,init,1} ...
rex                   <0.10.0>  {rpc,init,1} ...
sasl_safe_sup         <0.32.0>  {supervisor,sasl,1} ...
sasl_sup              <0.31.0>  {supervisor,sasl,1} ...
user                  <0.20.0>  {group,server,2} ...
6> gen_event:which_handlers(event_mgr).

(oops -- your handler was not installed.)

(Try the add_handler command to see what it actually

7> gen_event:add_handler(event_mgr,test_gen_event,[]).

 add_handler success {ok}

(It returns {ok}, which is not the expected return. It's
supposed to return 'ok'. Your handler's init/1 function
should return {ok,State} instead of {ok}.

You could check this in your code by writing
ok = gen_event:add_handler(...). This will give you a
distinct error message if something goes wrong.)

8> v(7).

2> test_gen_event:start_link().

 add_handler success ok

 Teriminating the Handler 3>
=ERROR REPORT==== 24-Feb-2003::14:02:51 ===
** gen_event handler test_gen_event crashed.
** Was installed in event_mgr
** Last event was: {request,980000001}
** When handler state == []
** Reason == {'EXIT',{format,[{io,format,
                                  [<0.21.0>,"~n Handle
request  ~w",980000001]},


Now, there's your SASL error report due to a crash in your
handler. (-:

On Mon, 24 Feb 2003, Suresh S wrote:

>Hi Ulf,
>> If you're not doing so already, you should run your
>> tests
>> with the SASL application active. You can do this
>> either by
>> starting erlang with 'erl -boot start_sasl', or by
>> calling
>> application:start(sasl) in the shell of an already
>> running
>> system.
>Hi have tested this module implementing gen_event,
>When an event is notified to the event_mgr, it  is not
>Even i started sasl also,
>the gen_event:add_handler is success i.e callback
>function init(_) is called.
>but when an event is notified gen_event:notify is
>called the callback function handle_event is not
>what may the problem?
>Just please have a look at this module attached,
>Missed your favourite TV serial last night? Try the new, Yahoo! TV.
>       visit http://in.tv.yahoo.com

Ulf Wiger, Senior Specialist,
   / / /   Architecture & Design of Carrier-Class Software
  / / /    Strategic Product & System Management
 / / /     Ericsson AB, Connectivity and Control Nodes

More information about the erlang-questions mailing list