My last comment on this issue (don't want to drag it further):
When the OP says;
emacs -Q
M-x desktop-save-mode
C-h v kill-emacs-hook
M-x kill-emacs
Expected behavior: emacs is killed.
Actual behavior: asked "Save desktop? (y or n)"
I say:
emacs -Q
(require 'emacs-lock) <C-x C-e>
(emacs-lock-mode 'exit) <C-x C-e>
M-x kill-emacs <RET>
Expected behavior: emacs is killed ???
Actual behavior: => Emacs cannot exit because buffer "*scratch*" is locked
Because I use emacs-lock and I certainly wouldn't expect it to be killed.