Drafted a branch "mdb/assert" in http://folk.uio.no/hbf/OpenLDAP/mdb.git/ and on Ada, based roughly on Howard's original message to you. I didn't know about that at first, which has caused some confusion.
So the callback usually receives an env after all, and a NULL context since I don't know what Howard intended there.
Howard, do I push this? Feel free to grab it and tweak a bit:)
env can be NULL. mdb_env_set_assert(env,cb) also sets a static variable with the callback for the asserts which do not know of an env. Could throw away that part later. Currently it only applies to one assert().
The branch also invalidates a transaction on any page allocation error, since the callers do not always clean up afterwards. Too aggressive, can be reverted after updating the callers. But for now it means MDB_MAP_FULL & co won't let the user commit an inconsistent transaction.