diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
index 81470d9fe7aceced94027f3bff86c6e59385fdba..7f6af7072104514d8fbeb02706fe244993318bdf 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -1347,6 +1347,11 @@ none:
 
 				mdb_cursor_init(&m2, txn, FREE_DBI, NULL);
 				do {
+					/* bail out if we're operating on the freelist.
+					 * TODO: get all of this working. Many circular dependencies...
+					 */
+					if (mc->mc_dbi == FREE_DBI)
+						break;
 					if (readit) {
 						MDB_val key, data;
 						MDB_oldpages *mop2;