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

(ITS#8756) assertion in mdb_page_dirty() due to loose pages

Full_Name: Hallvard B Furuseth
Version: mdb.master, bb8502f08800a44a6b91a94d6478aa7101c4cc77
Submission from: (NULL) (
Submitted by: hallvard

Described here with a fix, and with discussion in the thread:

"Inside freelist_save() the mt_loose_pages could be merged into the

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.