<div dir="ltr">2008/9/7 Paul Guyot <span dir="ltr"><<a href="mailto:pguyot@kallisys.net">pguyot@kallisys.net</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br>
<br>
On MacOS X, dynamic libraries opened with erl_ddll:load or load_driver are not closed when erl_ddll:unload/unload_driver is called.<br>
<br>
Steps to reproduce:<br>
* build a simple dynamic library, called simple_drv.so<br>
* start a new erlang shell in the same directory.<br>
* note down the PID.<br>
* evaluate erl_ddll:load(".", "simple_drv").<br>
* run lsof -p <PID> to see that indeed simple_drv.so file is open.<br>
* evaluate erl_ddll:unload("simple_drv").<br>
* run lsof -p <PID> to see that simple_drv.so file is still open.<br>
<br>
This is specific to MacOS X and this is simply because the code hasn't been written. On other Unix implementations, the erl_ddll code calls dlopen and dclose.<br>
<br>
The attached patch against R12B-4 fixes the bug and was tested on MacOS X 10.4/ppc.<br>
</blockquote><div><br>Thanks for your patch.<br><br>It works fine, but we will use the simpler solution of using dlopen() on all platforms:<br><br><a href="http://www.erlang.org/pipermail/erlang-patches/2008-September/000293.html">http://www.erlang.org/pipermail/erlang-patches/2008-September/000293.html</a></div>
<div><br>/Bjorn </div></div><br>-- <br>Björn Gustavsson, Erlang/OTP, Ericsson AB<br>
</div>