We track cursors by object location so if an object is deleted we can advance.
We weren't keep these isolated by db, so if a cursor is open at position X on db A, and a delete on db B removes an object at position X, a segfault can happen because a cursor will be advanced to an illegal position.
This is exacerbated by replication because once an oplog rolls over, every time we add an op, we delete one, so it makes the odds of this higher.