I think your proposal is going beyond what I was trying to do.
From the documentation, it sounds like a process using LMDB can not
safely fork, under any circumstances. My idea was to specialise this to saying that fork() followed immediately by exec() is safe, but that a plain fork() is still not supported. If a child wants to use the same db, it goes through the regular mdb_env_open sequence, rather than somehow inheriting the environment across the fork. I think that should address your pthread_exit concern, as well?
On your point that a user may not call mdb_env_close before the fork: the user might not want to, since s/he still wants to use the env in the original process.