Uncertain death
Dominic Williams
xpdoka@REDACTED
Thu Nov 17 23:31:35 CET 2005
Hello,
The following program seems to me to indicate that when a
processes gets killed, there is, for a brief moment,
contradictory information about its state. Specifically, the
information returned by processes() seems to lag behind that
given by is_process_alive().
%%% death.erl
-module (death).
-export ([run/0, server/0]).
run() ->
Pid = spawn (?MODULE, server, []),
exit (Pid, kill),
report (Pid),
timer:sleep(1000),
report (Pid).
report (Pid) ->
io:fwrite("~p alive: ~p; member of processes(): ~p~n",
[Pid, is_process_alive (Pid),
lists:member(Pid, processes())]).
server () ->
receive
hello ->
server();
stop ->
bye
end.
%%% end death.erl
1> c("/Users/dodo/tmp/death", [{outdir, "/Users/dodo/tmp/"}]).
{ok,death}
2> death:run().
<0.35.0> alive: false; member of processes(): true
<0.35.0> alive: false; member of processes(): false
ok
Same result under MacOS/R9C and WinXP/R10B
Regards,
Dominic Williams
http://www.dominicwilliams.net
----
More information about the erlang-questions
mailing list