[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18573: 24.3.93; set-face-attribute crashes Emacs when started with -

From: address@hidden
Subject: bug#18573: 24.3.93; set-face-attribute crashes Emacs when started with -nw
Date: Sun, 28 Sep 2014 14:24:21 +0200

On 28/09/2014 10:44, Jan Djärv wrote:

27 sep 2014 kl. 18:13 skrev address@hidden:

When launched via terminal (cli), Emacs crashes by just having this single line 
in init.el:

(set-face-attribute 'default nil :font  "Menlo-16")

Emacs does /not/ crash when launched from the Finder (same init.el)

This seems to be a generic error in xfaces.c.  It tries to load a font without 
checking the type
of frame.  The type is tty, but it tries to load a font anyway, and eventually 
ends up in (font.c) font_pixel_size, which does:

#define FRAME_RES_Y(f)                                          \
   (eassert (FRAME_WINDOW_P (f)), FRAME_DISPLAY_INFO (f)->resy)

Now, FRAME_DISPLAY_INFO for a NS compiled Emacs is

#define FRAME_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)

but the frame is not an NS frame, it is a tty frame, so bad things happen.
It is the same for X, but there it just happens to return a nonsense value, so 
the code continues without crashing, and eventually discovers that there are no 
font dirvers and the load font fails.

The code is in xfaces.c, Finternal_set_lisp_face_attribute, around line 3120 
where it calls

The code in question is not called if compiled for a tty (#ifdef:ed out), but 
it is called when the frame is a tty frame on a non-tty compiled Emacs.

I think these cases should be the same, i.e. font_load_for_lface not called for 
tty frames.

        Jan D.


Thank you, that sounds like the reason, although I am not fluent with C nor gdb to check and confirm it.

I can add that Emacs just crashes printing this error:

Fatal error 11: Segmentation fault[1] 51512 abort /Applications/Emacs.app/Contents/MacOS/Emacs -nw

Also, if that line is wrapped with condition-case err, like this:

(condition-case err (set-face-attribute 'default nil :font "Menlo-16") (error (message "Whoops!")))

I experience the same crash with same error message. No additional elisp-originating messages.

I have tried with GNU Emacs 24.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2013-03-13 on bob.porkrind.org, from emacsformacosx.com, and Emacs does not crash. So, it must be a bug in later versions.

I am of course aware that in any case Emacs will inherit whatever font and font size is specified in the terminal app (basically, that line is not meaningful in the cli).


reply via email to

[Prev in Thread] Current Thread [Next in Thread]