Full_Name: Hallvard B Furuseth Version: mdb.master, bb8502f08800a44a6b91a94d6478aa7101c4cc77 OS: URL: Submission from: (NULL) (193.71.61.52) Submitted by: hallvard
Described here with a fix, and with discussion in the thread: http://www.openldap.org/lists/openldap-devel/201710/msg00019.html
"Inside freelist_save() the mt_loose_pages could be merged into the mt_free_pgs. http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=libraries/l...
But at this point all loose_pages also still present in the mt_u.dirty_list. On the next loop inside freelist_save() a one more page could be requested, and page_alloc() could return a page which is already in the mt_u.dirty_list. In this case mdb_mid2l_insert() will return -1."
We could catch and handle the error when WRITEMAP is not in use.
Another fix is for freelist_save() to quit messing with loose pages and just reserve room for them, like it does for me_pghead.
In LMDB 1.0, we'll have more options.