After some speculation on <a href="http://stackoverflow.com/questions/13459190/erlang-exit-2-function" target="_blank">stackoverflow</a> I think I will report this here as well. (I am directly copying the content of the question.)<br>

<div class="gmail_quote"><div><br>
</div><div>I am playing around with the <a href="http://erlang.org/doc/man/erlang.html#exit-2" target="_blank">exit/2</a> function and its behavior when self() is used as a Pid and normal as a Reason.<br></div><div><br></div>

<div><div><font face="courier new, monospace">Erlang R15B03 (erts-5.9.3) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">Eshell V5.9.3  (abort with ^G)</font></div><div><font face="courier new, monospace">1> self().</font></div><div><font face="courier new, monospace"><0.32.0></font></div>


<div><font face="courier new, monospace">2> exit(self(), normal).</font></div><div><font face="courier new, monospace">** exception exit: normal</font></div><div><font face="courier new, monospace">3> self().</font></div>


<div><font face="courier new, monospace"><0.35.0></font></div></div><div><br></div><div><div>Shouldn't it be the case that only a 'normal' exit message is sent to the shell process, so there is no reason to exit?</div>


<div><br></div><div>Similarly:</div><div><br></div><div><font face="courier new, monospace">4> spawn(fun() -> receive Pid -> Pid ! ok end end). </font></div><div><font face="courier new, monospace"><0.38.0></font></div>


<div><font face="courier new, monospace">5> exit(v(4), normal).</font></div><div><font face="courier new, monospace">true</font></div><div><font face="courier new, monospace">6> v(4) ! self().</font></div><div><font face="courier new, monospace"><0.35.0></font></div>


<div><font face="courier new, monospace">7> flush().</font></div><div><font face="courier new, monospace">Shell got ok</font></div><div><font face="courier new, monospace">ok</font></div><div><font face="courier new, monospace"><br>


</font></div><div>But:</div><div><br></div><div><font face="courier new, monospace">8> spawn(fun() -> exit(self(), normal), receive _ -> ok end end).         </font></div><div><font face="courier new, monospace"><0.43.0></font></div>


<div><font face="courier new, monospace">9> is_process_alive(v(8)).</font></div><div><font face="courier new, monospace">false</font></div></div>
</div><br>