Most of the work done by run_extension_callbacks is required to be done while holding require_lock (except the call to require, which should be _require_prelocked instead). Instead, it drops the lock just before doing all of this work. This introduces a thread-safety regression.