From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "enquiries@vsm.in" Newsgroups: gmane.emacs.bugs Subject: bug#18573: 24.3.93; set-face-attribute crashes Emacs when started with -nw Date: Mon, 29 Sep 2014 19:34:04 +0200 Message-ID: <5429980C.20805@vsm.in> References: <5426E238.6060301@vsm.in> <5CAB16D6-ECC8-4D23-A0E2-FCEADF48C1B0@swipnet.se> <8361g6mjl8.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1412012170 20678 80.91.229.3 (29 Sep 2014 17:36:10 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 29 Sep 2014 17:36:10 +0000 (UTC) Cc: 18573@debbugs.gnu.org To: Eli Zaretskii , 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:36:02 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 1XYeri-0002VU-FI for geb-bug-gnu-emacs@m.gmane.org; Mon, 29 Sep 2014 19:36:02 +0200 Original-Received: from localhost ([::1]:38144 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XYerh-0004uc-J3 for geb-bug-gnu-emacs@m.gmane.org; Mon, 29 Sep 2014 13:36:01 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43831) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XYerG-0004qX-6U for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:35:58 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XYeqq-00062x-7d for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:35:33 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:35792) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XYeqq-0005xB-5E for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:35:08 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XYeqk-0003lc-EK for bug-gnu-emacs@gnu.org; Mon, 29 Sep 2014 13:35:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "enquiries@vsm.in" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 29 Sep 2014 17:35: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.141201205314414 (code B ref 18573); Mon, 29 Sep 2014 17:35:02 +0000 Original-Received: (at 18573) by debbugs.gnu.org; 29 Sep 2014 17:34:13 +0000 Original-Received: from localhost ([127.0.0.1]:55589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XYepw-0003kP-KB for submit@debbugs.gnu.org; Mon, 29 Sep 2014 13:34:13 -0400 Original-Received: from mail.forumcivico.org ([176.58.106.92]:38383) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XYeps-0003kF-MI for 18573@debbugs.gnu.org; Mon, 29 Sep 2014 13:34:09 -0400 Original-Received: from dummy.name; Mon, 29 Sep 2014 19:34:07 +0200 In-Reply-To: <8361g6mjl8.fsf@gnu.org> X-TagToolbar-Keys: D20140929193404632 X-Mailer: CommuniGate Pro WebUser v5.4.8 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:93879 Archived-At: On 29/09/2014 19:18, Eli Zaretskii wrote: >> 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? > That description sounds correct to me, although I have no knowledge of the innards of Emacs. Signalling an error would be better than crashing of course. Still, the crash is not happening with prior version (GNU Emacs 24.3.1). Sam