...which means that an unconditional process termination is propagated unconditionally as well.
==== To reproduce:
1> process_flag(trap_exit, true).
false
2> link(spawn(fun()->timer:sleep(2000), exit(self(), kill) end)).
true
==== Observed behaviour:
3> \ exception error: killed
% I.e., initial process is slain as well.
==== Expected behaviour:
3> f(M), receive M->M end.
{'EXIT',<0.57.0>,killed}
% I.e., initial process receives a non-'kill' exit message.
...which means that an unconditional process termination is propagated unconditionally as well. ==== To reproduce: 1> process_flag(trap_exit, true). false 2> link(spawn(fun()->timer:sleep(2000), exit(self(), kill) end)). true
==== Observed behaviour: 3> \ exception error: killed % I.e., initial process is slain as well.
==== Expected behaviour: 3> f(M), receive M->M end. {'EXIT',<0.57.0>,killed} % I.e., initial process receives a non-'kill' exit message.