From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Robert Cochran Newsgroups: gmane.emacs.bugs Subject: bug#24041: 25.1.50; xwidget + -nw mode gives segfault Date: Sun, 21 Aug 2016 19:12:41 -0700 Message-ID: <878tvpa6w6.fsf@cochranmail.com> References: <8760qwtxld.fsf@cochranmail.com> <83oa4ndhfw.fsf@gnu.org> <87lgzrm8ft.fsf@cochranmail.com> <8360qudeuj.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1471832008 22462 195.159.176.226 (22 Aug 2016 02:13:28 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 22 Aug 2016 02:13:28 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cc: shanemhansen@gmail.com, 24041@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Aug 22 04:13:24 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bbejr-0005WU-Ek for geb-bug-gnu-emacs@m.gmane.org; Mon, 22 Aug 2016 04:13:23 +0200 Original-Received: from localhost ([::1]:39165 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bbejp-00035k-Ox for geb-bug-gnu-emacs@m.gmane.org; Sun, 21 Aug 2016 22:13:21 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49419) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bbejY-0002eI-5p for bug-gnu-emacs@gnu.org; Sun, 21 Aug 2016 22:13:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bbejW-0005sP-1r for bug-gnu-emacs@gnu.org; Sun, 21 Aug 2016 22:13:03 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:38611) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bbejV-0005sK-Ub for bug-gnu-emacs@gnu.org; Sun, 21 Aug 2016 22:13:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bbejV-0007mD-O4 for bug-gnu-emacs@gnu.org; Sun, 21 Aug 2016 22:13:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Robert Cochran Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 22 Aug 2016 02:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 24041 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 24041-submit@debbugs.gnu.org id=B24041.147183197429879 (code B ref 24041); Mon, 22 Aug 2016 02:13:01 +0000 Original-Received: (at 24041) by debbugs.gnu.org; 22 Aug 2016 02:12:54 +0000 Original-Received: from localhost ([127.0.0.1]:36323 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bbejO-0007lr-5F for submit@debbugs.gnu.org; Sun, 21 Aug 2016 22:12:54 -0400 Original-Received: from mail.workgrouplinux.net ([207.195.177.82]:33393) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bbejM-0007li-Bq for 24041@debbugs.gnu.org; Sun, 21 Aug 2016 22:12:53 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=simple; d=cochranmail.com; h=from:to :cc:subject:references:date:in-reply-to:message-id:mime-version :content-type; s=dkim1; bh=/QsekyMleTpPgsPRfeq++zrV9WM=; b=K9vtJ +2CF3+a+nqCDrGNU9d9R/JGeaz50PMi1+dchG34dXn9IEytkhly17DE142Hgn7f+ WJ8M9tvlrBogEqaBipvE1AF47jXBbYxnzS6SI2ZkykYWNl9EZct09Y2HcHV0KC7W e12Cx2X7lAMODG8CLg+16KFtTJ1Wh4eYH+UCMIIJTBDmwOAswjekhhF8oGlVG+eC ieK42ce2dZCCicoGjhZ9r6TPfwggaYFutuRhZyV24LyUhOV3AEZyGMBsF/OqJQqG ToYdAnqN5ubu+03CYBqJf6QzcpW84otw3ygb8oLqZJ68oAakqel5Q61WT5YPXSgE 4Wk72Uakka1uxEhRg== Original-Received: (qmail 9402 invoked by uid 0); 22 Aug 2016 02:12:50 -0000 Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=private; d=cochranmail.com; b=EKpAm2plOxKh1tG1BjtI0W82d9N3e4h2AcXwI8uzRuJ5ASrNabrxKZbEcUhgX5uh8Epb1r24Si/FzXj2WbNP4w==; Original-Received: from 131-191-86-130.as.clicknet.org (HELO SoraLaptop) (robert@cochranmail.com@131.191.86.130) by mail.cochrantribe.org with ESMTPA; 22 Aug 2016 02:12:50 -0000 In-Reply-To: <8360qudeuj.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 21 Aug 2016 05:40:20 +0300") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:122480 Archived-At: --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> (Is that even possible? Start a graphical frame from a tty Emacs?) > > Of course, it is. emacsclient can do that. Assuming Emacs was built > with GUI support, of course. We have this feature for several years > now. > Indeed it can. Never tried it before, and kinda assumed it wouldn't work. Silly me. Anyways, I have a patch, below, that's my first stab at solving the problem. All it does is call `check_x_display_info` with the current frame and allows any resulting error signals to propagate back up. Probably not the most elegant solution, but I'm not entirely clear what can and can't be done from within the Emacs C core. Suggestions are very welcome. ----- --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Signal-an-error-when-a-TTY-frame-tries-to-create-an-.patch Content-Description: Patch to see if the frame is an X frame before creating xwidget >From 82532f657f7acc824745406e8917a1a4f49723d9 Mon Sep 17 00:00:00 2001 From: Robert Cochran Date: Sun, 21 Aug 2016 19:01:14 -0700 Subject: [PATCH] Signal an error when a TTY frame tries to create an xwidget * src/xwidget.c (make-xwidget): signal an error if current frame is a TTY frame. Trying to use a TTY frame to create an xwidget can cause a segfault. Check before hand that the frame is an X frame via check_x_display_info, which will signal an error if it is not. This fixes Bug#24041. --- src/xwidget.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/xwidget.c b/src/xwidget.c index f5f4da0..0edfacc 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -99,8 +99,15 @@ Returns the newly constructed xwidget, or nil if construction fails. */) CHECK_NATNUM (width); CHECK_NATNUM (height); - struct xwidget *xw = allocate_xwidget (); + struct xwidget *xw; Lisp_Object val; + + /* Ensure that the current frame is an X frame before we try + creating any xwidgets. If it isn't, check_x_display_info will + signal an error. */ + check_x_display_info (Fselected_frame ()); + + xw = allocate_xwidget (); xw->type = type; xw->title = title; xw->buffer = NILP (buffer) ? Fcurrent_buffer () : Fget_buffer_create (buffer); -- 2.7.4 --=-=-= Content-Type: text/plain ----- HTH, -- ~Robert Cochran GPG Fingerprint - E778 2DD4 FEA6 6A68 6F26 AD2D E5C3 EB36 4886 8871 --=-=-=--