[PATCH] LMDB full patch set
Andrew Bartlett
abartlet at samba.org
Thu May 3 04:58:22 UTC 2018
On Mon, 2018-04-16 at 16:57 +0100, Howard Chu wrote:
> mdb_env_close() will reset any reader slots owned by the process. The PID is
> stored in env->me_pid so unfortunately both parent and child will have the
> same PID recorded here after a fork. Thus env_close in the child would end up
> releasing the parent's reader slots. Fairly disastrous. Obviously we can fix
> this trivially by just using getpid() in env_close().
So, if after the fork(), we just ignore the old DB, except to close
mdb_env_get_fd() (which is not the lock file, and so has no fcntl
semantics) are we safe?
I know we will leak a little memory, but as we don't create a deep tree
(sometimes a wide one, but never more than about 3 deep), we can cope
with that.
Then, when the re-open behaviour becomes available in a release we can
consider using that.
Would this be safe? (It seems safe from our tests so far).
Thanks,
Andrew Bartlett
--
Andrew Bartlett
https://samba.org/~abartlet/
Authentication Developer, Samba Team https://samba.org
Samba Development and Support, Catalyst IT
https://catalyst.net.nz/services/samba
More information about the samba-technical
mailing list