>> > You're returning 1, where a Lisp_Object is expected. Thanks. I corrected it to return val, but still get the same segfault upon "make bootstrap". Attached is the current diff, but it is much easier to simply read the new function I am trying -- DEFUN ("message", Fmessage, Smessage, 1, MANY, 0, doc: /* Display a message at the bottom of the screen. . . usage: (message FORMAT-STRING &rest ARGS) */) (nargs, args) int nargs; Lisp_Object *args; { if (Fequal(args[0],Qt)) { register Lisp_Object val; Lisp_Object argb[2]; argb[0]=build_string ("%s"); argb[1]=args[1]; val = Fformat (2, argb); message3 (val, SBYTES (val), STRING_MULTIBYTE (val)); return val; } else { if (NILP (args[0]) || (STRINGP (args[0]) && SBYTES (args[0]) == 0)) { message (0); return args[0]; } else { register Lisp_Object val; val = Fformat (nargs, args); message3 (val, SBYTES (val), STRING_MULTIBYTE (val)); return val; } } } The error remains: . Loading loadup.el (source)... . Loading emacs-lisp/byte-run... . . Loading format... Loading bindings... Loading files... Loading cus-face... Loading faces... Loading button... Loading startup... make[3]: *** [emacs] Segmentation fault make[3]: Leaving directory .. make[2]: *** [src] Error 2