<div dir="auto">Ah, so yet another bug! :)<div dir="auto"><br></div><div dir="auto">I guess this how you know that a feature hasn't really been used much.</div><div dir="auto"><br></div><div dir="auto">BR,</div><div dir="auto">Ulf W</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Den fre 26 mars 2021 17:06Martin Björklund <<a href="mailto:mbj@4668.se">mbj@4668.se</a>> skrev:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ulf Wiger <<a href="mailto:ulf@wiger.net" target="_blank" rel="noreferrer">ulf@wiger.net</a>> wrote:<br>
> Permissions are a bit tricky. :)<br>
<br>
Indeed.  This discussion prompted me to use permissions for a use case<br>
of my own, but the system behaved really strange.  Eventually I found<br>
the problem.  Have a look at this:<br>
<br>
Eshell V11.1.4  (abort with ^G)<br>
1> application:load(sasl).<br>
ok<br>
2> application:permit(sasl, false).<br>
ok<br>
3> application:start(sasl).<br>
ok<br>
4> application:permit(sasl, true). <br>
ok<br>
5> application:which_applications().<br>
[{sasl,"SASL  CXC 138 11","4.0.1"},<br>
 {stdlib,"ERTS  CXC 138 10","3.14"},<br>
 {kernel,"ERTS  CXC 138 10","7.2"}]<br>
<br>
<br>
This is fine and as expected.  But now let's throw in an additional<br>
permit false:<br>
<br>
<br>
Eshell V11.1.4  (abort with ^G)<br>
1> application:load(sasl).<br>
ok<br>
2> application:permit(sasl, false).<br>
ok<br>
3> application:start(sasl).<br>
ok<br>
4> application:permit(sasl, false).       % <-- HERE<br>
ok<br>
5> application:permit(sasl, true). <br>
ok<br>
6> application:which_applications().<br>
[{stdlib,"ERTS  CXC 138 10","3.14"},<br>
 {kernel,"ERTS  CXC 138 10","7.2"}]<br>
<br>
<br>
Now sasl isn't started!<br>
<br>
It turns out that the second permit false will remove the<br>
application from the start_p_false list in application_controller.erl:<br>
<br>
    %% start requested but not started because permit was false<br>
    {false, {true, _Appl}, false, {value, _Tuple}, false, false} -><br>
       update_permissions(AppName, Bool),<br>
       SS = S#state{start_p_false = keydelete(AppName, 1, SPF)},<br>
       {reply, ok, SS};<br>
<br>
This doesn't seem right.  I think this should be a noop.<br>
<br>
<br>
/martin<br>
</blockquote></div>