this function, and the lock will still be held, so we'd have deadlock.
Instead, unlock, then release. We don't need the lock for calling the
release - we're not modifying any shared variables my that point.
This should probbaly go onto the 1.0 branch, although it would be nearly
impossible to trigger the deadlock with the way we use the free handlers
at present.
This commit was SVN r8057.