Here’s the stack trace after setting debug-on-error true and creating a message with compose-mail:
Debugger entered--Lisp error: (error "`recenter'ing a window that does not display current-buffer.")
recenter((4))
org-overview()
org-set-startup-visibility()
org-mode()
set-buffer-major-mode(#<buffer *unsent mail*<2>>)
window-normalize-buffer-to-switch-to("*unsent mail*<2>")
pop-to-buffer("*unsent mail*<2>" (display-buffer-same-window (inhibit-same-window)) nil)
pop-to-buffer-same-window("*unsent mail*<2>")
message-pop-to-buffer("*unsent mail*<2>" nil)
message-mail(nil nil nil nil nil nil nil nil)
compose-mail(nil nil nil nil)
funcall-interactively(compose-mail nil nil nil nil)
call-interactively(compose-mail nil nil)
command-execute(compose-mail)
I have org-mode as my default major-mode which, looking at the stack trace, may be significant.