$ make; cd src Then do the following for each symbol: - setf - find-file - with-current-buffer - buffer-file-name $ ./emacs -Q -batch -l test.el -eval '(foo (quote setf))' [1] "setf" [2] "sxtf" $ ./emacs -Q -batch -l test.el -eval '(foo (quote find-file))' [1] "find-file" [2] "fxnd-file" And these below below: aref, null, car, cdr, save-current-buffer $ ./emacs -Q -batch -l test.el -eval '(foo (quote aref))' [1] "aref" Fatal error 11: Segmentation fault Backtrace: ... My observation is that symbols "introduced" via C defuns and defmacros exhibit this problem, whereas those introduced via Elisp defuns and defmacros do not. No symbols introduced via defvars exhibit this problem, as shown above with buffer-file-name. Seeing that it is a segfault, maybe the setf is trying to modify readonly memory produced by the C defuns and defmacros? If that is the case, *if* we allow such modifications, we should make the memory readwrite; *otherwise* maybe we should no-op, warn, or err in setf and friends when we see readonly memory blocks? With this collection of GDB commands: