From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#18573: 24.3.93; set-face-attribute crashes Emacs when started with -nw Date: Mon, 29 Sep 2014 20:18:11 +0300 Message-ID: <8361g6mjl8.fsf@gnu.org> References: <5426E238.6060301@vsm.in> <5CAB16D6-ECC8-4D23-A0E2-FCEADF48C1B0@swipnet.se> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-Trace: ger.gmane.org 1412011174 5421 80.91.229.3 (29 Sep 2014 17:19:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 29 Sep 2014 17:19:34 +0000 (UTC) Cc: enquiries@vsm.in, 18573@debbugs.gnu.org To: Jan =?UTF-8?Q?Dj=C3=A4rv?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Sep 29 19:19:27 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XYebb-0002VZ-Oz for geb-bug-gnu-emacs@m.gmane.org; Mon, 29 Sep 2014 19:19:23 +0200 Original-Received: from localhost ([::1]:38070 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XYeba-0000Yl-US for geb-bug-gnu-emacs@m.gmane.org; Mon, 29 Sep 2014 13:19:22 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59046) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XYebT-0000Y4-9S for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:19:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XYebM-00077S-70 for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:19:15 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:35787) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XYebM-000779-3Q for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:19:08 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XYebG-0003NG-JC for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:19:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 29 Sep 2014 17:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18573 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 18573-submit@debbugs.gnu.org id=B18573.141201110512922 (code B ref 18573); Mon, 29 Sep 2014 17:19:02 +0000 Original-Received: (at 18573) by debbugs.gnu.org; 29 Sep 2014 17:18:25 +0000 Original-Received: from localhost ([127.0.0.1]:55584 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XYeae-0003ML-RJ for submit@debbugs.gnu.org; Mon, 29 Sep 2014 13:18:25 -0400 Original-Received: from mtaout28.012.net.il ([80.179.55.184]:40045) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XYeac-0003MB-3P for 18573@debbugs.gnu.org; Mon, 29 Sep 2014 13:18:23 -0400 Original-Received: from conversion-daemon.mtaout28.012.net.il by mtaout28.012.net.il (HyperSendmail v2007.08) id <0NCO00600A7YJ900@mtaout28.012.net.il> for 18573@debbugs.gnu.org; Mon, 29 Sep 2014 20:17:13 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout28.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NCO00NTKAOP6H90@mtaout28.012.net.il>; Mon, 29 Sep 2014 20:17:13 +0300 (IDT) In-reply-to: <5CAB16D6-ECC8-4D23-A0E2-FCEADF48C1B0@swipnet.se> X-012-Sender: halo1@inter.net.il X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:93878 Archived-At: > From: Jan Djärv > Date: Sun, 28 Sep 2014 10:44:15 +0200 > Cc: 18573@debbugs.gnu.org > > 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 > font_load_for_lface. > > 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. I believe this happens when internal-set-lisp-face-attribute is called with its FRAME argument t, meaning change the default for new (i.e. future) frames. Since the code needs a frame, it just uses the selected frame, which in this case happens to be a TTY frame. Is that description correct? If so, the question is how to fix this. If we simply do nothing when the selected frame is a TTY frame, and then create a GUI frame at some future point, will the new default take effect? If it will, then I agree that the code under this condition if (! FONT_OBJECT_P (value)) should not be executed when the selected frame is a TTY frame. But if this doesn't work, then what are our alternatives? We could loop over all the frames looking for a GUI frame, and use that. But what if there's no such frame? Signal an error?