<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 8, 2021 at 7:10 PM Roger Lipscombe <<a href="mailto:roger@differentpla.net">roger@differentpla.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Specifically, I invoke the below function with rpc:call from an escript...<br>
<br>
frob(Parent, Etc) -><br>
    link(Parent)<br>
    % do something interesting<br>
    ok.<br>
<br>
(condensed example)<br>
<br>
My escript dies with the following:<br>
<br>
{"init terminating in do_boot",{#Ref<0.2297215750.597688321.118580>,return,ok}}<br>
init terminating in do_boot ({,return,ok})<br>
<br>
If I unlink from the pid before returning, it's all good. This has<br>
worked perfectly since (afaict) R16, but broke at some point between<br>
OTP-22.x and OTP-24.x (we skipped OTP-23.x)<br>
<br>
We're using OTP-24.0.6<br>
</blockquote></div><br clear="all"><div>Yes this was intentionally changed in OTP 23 due to a performance optimization. The process executing the actual call now terminates with an exit reason not equal to normal while it previously used to terminate with a normal exit reason. The rpc module has however never given any guarantees about what happens with the process executing the call after the call returns. Leaving a link to the process after the call is erroneous.</div><div><br></div><div>Regards,</div><div>Rickard </div>-- <br><div dir="ltr" class="gmail_signature">Rickard Green, Erlang/OTP, Ericsson AB</div></div>