<div dir="ltr">On Fri, Jan 13, 2017 at 10:09 AM, Sverker Eriksson <span dir="ltr"><<a href="mailto:sverker.eriksson@ericsson.com" target="_blank">sverker.eriksson@ericsson.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 01/12/2017 08:21 PM, Jason Orendorff wrote:</span><span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
4.  We suspect it's actually totally safe to pass a process-independent<br>
     environment as the first parameter, regardless of whether there's a<br>
     "calling process" or we're "calling from a created thread". Is it?<br>
     If so, would you accept a patch to document that that's OK?<br>
</blockquote></span>
I'm not super excited about such a guarantee, at least not right now.<br></blockquote><div><br></div><div>Thank you for the quick, thoughtful response. I appreciate your time.<br></div><br></div><div class="gmail_quote">Is there a way to enforce this rule for our users that we've missed? When<br>our `send` method is called, I think we have to figure out if there's a current<br>calling process, and if so, its environment. I don't see a way to do it without<br>storing that information in TLS ahead of time -- at a cost to every NIF call.<br></div><br></div><div class="gmail_extra">We could make code that runs on created threads statically different from<br>code that runs in the Erlang scheduler's threads, e.g. by making<br>`NifCallEnv`, `AllocatedEnvInNifThread`, and `AllocatedEnvInCreatedThread`<br></div><div class="gmail_extra">three different types, of which only 2 have `.send()` methods. But this<br></div><div class="gmail_extra">seems horrible.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">We have considered several possible approaches, all about as bad as that.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Thanks,<br></div><div class="gmail_extra"><div class="gmail_quote">-j<br><br></div></div></div>