On Mar 21 09:03, Alexey Sokolov wrote:
Hello,
If the same DLL is dlopen()ed several times, dlclose() will actually
unload the DLL only after the same number of calls to dlclose().
This works fine in cygwin, until we add fork().
It looks like in the child process the counters of inherited DLLs are
set to 1, so the first dlclose() unloads it, causing segfault for
subsequent access to the unloaded code.
https://github.com/znc/znc/issues/1385#issuecomment-288014319 has a
working minimal example of this behavior.
dlopen/dlclose reference counting was broken. I applied a fix and
uploaded new dev snapshots to https://cygwin.com/snapshots/
I'm just building a 2.8.0-0.2 test release as well.
Please test.
Thanks,
Corinna