[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#7651) LMDB: Uncontrolled database when opened from multiple processes



Hi again,

I was able to recreate the scenario in a test case. I must have mixed 
something up previously. After more tests it seems that the memory 
growth only appears when transactions are reset within the child.

Here's the full code:
https://gist.github.com/dim/6122131

Output on my machine:

$ rm -f testdb/* && mkdir -p testdb && make mtest8 && ./mtest8
gcc -pthread -O2 -g -W -Wall -Wno-unused-parameter -Wbad-function-cast   
-c mtest8.c
gcc -pthread -O2 -g -W -Wall -Wno-unused-parameter -Wbad-function-cast   
mtest8.o liblmdb.a  -o mtest8
NO FORK     : 1699840
FORK & OPEN : 1699840
FORK & COPY : 6225920

Thanks,
Dimitrij

On 30/07/13 23:34, Hallvard Breien Furuseth wrote:
> Whoops, too hasty reply.  Didn't notice your mdb_env_close(env)
> before the fork.  But do you mdb_env_create() again after?
> mdb_env_close() destroys the MDB_env.
>