Возврат в буфер определенно не делает его доступным только для чтения.
Вы можете оставить совет по поводу переключения только для чтения, чтобы увидеть, есть ли где-нибудь непреднамеренный вызов.
(defadvice toggle-read-only (around invoke-debugger activate)
"invoke debugger to see the call stack"
(debug ""))
Если это не поможет, вы даже можете добавить совет на setq
и войти в отладчик, когда присваивается buffer-read-only
.