[erlang-questions] error message interpretation

Manfred Lotz <>
Mon Dec 25 18:28:40 CET 2006


Hi there,
I'm a beginner to erlang and I tried the following module:

-module(mytimer).
-export([start/2,timer/3,cancel/1]).

timeout(Time,Alarm) ->
    spawn(mytimer,timer,[Time,Alarm,self()]).

cancel(Timer) -> 
    Timer ! cancel.

timer(Time,Alarm,Pid) ->
    receive
	cancel -> Pid ! "Timer cancelled"
    after Time -> Pid ! Alarm
    end.

start(Time,Alarm) ->
    timeout(Time,Alarm),
    receive 
	Alarm ->
	    io:format("~w~n",[Alarm]);
	cancel -> 
	    io:fwrite("timer cancelled~n",[])
    end.


Now when calling 
mytimer:start(1000,"Wakeup").
in the erl shell this works fine:

However, when calling timeout directly: mytimer:timeout(1000,"Wakeup").
I get this (unexpectedly):

=ERROR REPORT==== 25-Dec-2006::18:25:31 ===
Error in process <0.122.0> with exit value: {undef,[{mytimer,timeout,
[1000,"Wakeup"]},{erl_eval,do_apply,5},{shell,exprs,6},
{shell,eval_loop,3}]}

** exited: {undef,[{mytimer,timeout,[1000,"Wakeup"]},
                   {erl_eval,do_apply,5},
                   {shell,exprs,6},
                   {shell,eval_loop,3}]} **

Erlang error messages look pretty cryptic to me. Can anybody explain to
me what the error message tells me?


-- 
Manfred




More information about the erlang-questions mailing list