Yeah, apparently `kill-emacs' is considered "low-level primitive":
Functions to call with no arguments to query about killing Emacs.
If any of these functions returns nil, killing Emacs is canceled.
‘save-buffers-kill-emacs’ calls these functions, but ‘kill-emacs’,
the low level primitive, does not. See also ‘kill-emacs-hook’.
Since I have rebound C-x C-c for my private use (why waste such a nice shortcut on something used once in a few days?), I have been using `kill-emacs'. But apparently it's not what should be used... Emacs making it easy to silently break things, nothing new.
I suggest that `desktop-release-lock' call is still moved from something hooked on `kill-emacs-query-functions' to `kill-emacs-hook'. That part is supposed to be done unconditionally.
Paul