Evaluate the following from 'emacs -Q': (setq-local foo 1) ;; Simulate (debug-watch 'foo) + continue from *Backtrace* (add-variable-watcher 'foo (lambda (symbol newval operation where) (with-temp-buffer (kill-all-local-variables)))) (fundamental-mode) This results in ../../src/data.c:98: Emacs fatal error: assertion failed: found == !EQ (blv->defcell, blv->valcell) Backtrace attached. I guess it has something to do with the recursive `kill-all-local-variables' call, although I'm not familiar enough with the local variable machinery to say more about it.