diff --git a/leveldb/db.go b/leveldb/db.go
index eb6abd0..1aed209 100644
--- a/leveldb/db.go
+++ b/leveldb/db.go
@@ -1062,6 +1062,8 @@
 	if db.journal != nil {
 		db.journal.Close()
 		db.journalWriter.Close()
+		db.journal = nil
+		db.journalWriter = nil
 	}
 
 	if db.writeDelayN > 0 {
@@ -1077,15 +1079,11 @@
 		if err1 := db.closer.Close(); err == nil {
 			err = err1
 		}
+		db.closer = nil
 	}
 
-	// NIL'ing pointers.
-	db.s = nil
-	db.mem = nil
-	db.frozenMem = nil
-	db.journal = nil
-	db.journalWriter = nil
-	db.closer = nil
+	// Clear memdbs.
+	db.clearMems()
 
 	return err
 }
diff --git a/leveldb/db_state.go b/leveldb/db_state.go
index facf64f..590b24f 100644
--- a/leveldb/db_state.go
+++ b/leveldb/db_state.go
@@ -153,7 +153,7 @@
 func (db *DB) getMems() (e, f *memDB) {
 	db.memMu.RLock()
 	defer db.memMu.RUnlock()
-	if db.mem == nil {
+	if db.mem == nil && !db.isClosed() {
 		panic("nil effective mem")
 	}
 	db.mem.incref()
@@ -167,7 +167,7 @@
 func (db *DB) getEffectiveMem() *memDB {
 	db.memMu.RLock()
 	defer db.memMu.RUnlock()
-	if db.mem == nil {
+	if db.mem == nil && !db.isClosed() {
 		panic("nil effective mem")
 	}
 	db.mem.incref()
@@ -205,6 +205,14 @@
 	db.memMu.Unlock()
 }
 
+// Clear mems ptr; used by DB.Close().
+func (db *DB) clearMems() {
+	db.memMu.Lock()
+	db.mem = nil
+	db.frozenMem = nil
+	db.memMu.Unlock()
+}
+
 // Set closed flag; return true if not already closed.
 func (db *DB) setClosed() bool {
 	return atomic.CompareAndSwapUint32(&db.closed, 0, 1)
diff --git a/leveldb/db_write.go b/leveldb/db_write.go
index 5576761..37acb3f 100644
--- a/leveldb/db_write.go
+++ b/leveldb/db_write.go
@@ -73,6 +73,10 @@
 		v := db.s.version()
 		defer v.release()
 		mdb = db.getEffectiveMem()
+		if mdb == nil {
+			err = ErrClosed
+			return false
+		}
 		defer func() {
 			if retry {
 				mdb.decref()
@@ -310,6 +314,9 @@
 
 	// Check for overlaps in memdb.
 	mdb := db.getEffectiveMem()
+	if mdb == nil {
+		return ErrClosed
+	}
 	defer mdb.decref()
 	if isMemOverlaps(db.s.icmp, mdb.DB, r.Start, r.Limit) {
 		// Memdb compaction.
diff --git a/leveldb/session.go b/leveldb/session.go
index b0d3fef..3a1e6d2 100644
--- a/leveldb/session.go
+++ b/leveldb/session.go
@@ -87,7 +87,7 @@
 	}
 	s.manifest = nil
 	s.manifestWriter = nil
-	s.stVersion = nil
+	s.setVersion(&version{})
 }
 
 // Release session lock.
