> The "Unrecognised entry" error suggests the undo-tree-canary symbol
> has somehow ended up in a `buffer-undo-tree' entry.

You mean "buffer-undo-list" not "buffer-undo-tree" right?

I checked Emacs 24.3 and as I suspected it's quite easy to make
undo-tree-canary appear in the buffer-undo-list. What changed is the
error checking in core Emacs. If you expected that undo-tree-canary
would never be there between commands, that has not been so for some
time.

Could you tell me more about the purpose of undo-tree-canary?