From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Kai Ma Newsgroups: gmane.emacs.bugs Subject: bug#59794: Acknowledgement (29.0.60; NSport segfaults when a fullscreen frame is being closed) Date: Sat, 03 Dec 2022 18:48:15 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27666"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: 59794@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Dec 03 21:33:27 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p1ZCP-00072u-KE for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 03 Dec 2022 21:33:25 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p1ZC9-0000Cz-C3; Sat, 03 Dec 2022 15:33:09 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1ZC3-00006b-BW for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 15:33:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p1ZC3-0002P1-3j for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 15:33:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p1ZC2-0000wk-Vf for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 15:33:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Kai Ma Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Dec 2022 20:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 59794 X-GNU-PR-Package: emacs Original-Received: via spool by 59794-submit@debbugs.gnu.org id=B59794.16700995773612 (code B ref 59794); Sat, 03 Dec 2022 20:33:02 +0000 Original-Received: (at 59794) by debbugs.gnu.org; 3 Dec 2022 20:32:57 +0000 Original-Received: from localhost ([127.0.0.1]:53192 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1ZBw-0000w6-HJ for submit@debbugs.gnu.org; Sat, 03 Dec 2022 15:32:56 -0500 Original-Received: from mail-pj1-f68.google.com ([209.85.216.68]:36410) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1Q4I-0007us-Sr for 59794@debbugs.gnu.org; Sat, 03 Dec 2022 05:48:29 -0500 Original-Received: by mail-pj1-f68.google.com with SMTP id q17-20020a17090aa01100b002194cba32e9so10604979pjp.1 for <59794@debbugs.gnu.org>; Sat, 03 Dec 2022 02:48:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:to:from:from:to:cc:subject:date:message-id:reply-to; bh=o4J3vyUaEitC/4/GCfi/BOyjOdMPROzI/UASJiA155w=; b=NYQUM/8ECtPHQ/OA1SPhFVDIm/u/eQ8NDtntZBT57lDk/GN/V72kt+cyqkWNBwKI9p JSjuk1Bc3gbyxjFeR1qXGmqoUiDsfYCRgz4fOwomBdp49419CkVBCOMWavlMFYRM5UZP uBSpsd9dxH/xB3y6uoK5kTOAbq9kUZ/O1sYgBhanDgTBn/O4h9u/ZwHXsc4z79Dnq354 jeVpM0e3KDno2UdRHQpECHQ92y2aXK3c3s6c+vi7cyxsguR4eYA0Ds1fjSU9gli7+684 RtcLOoW0mGarcTSYLQTVfwEDFxI10BrKLBGXE8zJ1T1tf0jrklnJ4hK0Uby+UYwdgUfD Ph0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o4J3vyUaEitC/4/GCfi/BOyjOdMPROzI/UASJiA155w=; b=sUw8oh0F8nq7qj81EZ8PKSNs9H+numT7qwwap7FKmXSCpJa0MiB3wXemTi7mcDzhoW my2xN/p51N9DFAIZHjkO6tVtkALipfqbpyXDD+Hk7/jXvEovfSFJjISwwIzElSMYs3P+ AkBdjEFH2LUgGLz7CRbKBLRD2XVOExPBW4sHwVvAYiLUcobSC7NfsK+PAkFc5weL0PdW 41QDlYmR6T0RpHC2HmsWyQNnL/38oc8ovB0qbh5EkqM2PenYd3S8gsB/wyU/nvanEvIp lCsocIlHOdvJ0NxmCX8WNv8ETaM3IyLULzSNQtLsCznyTksj4upzuWBWcd/ZCBpGUuP/ suzA== X-Gm-Message-State: ANoB5pn6Zsvp045SatpkiGweAykMexMKnmHexQdh0aSGwzqo8Wh8070R hknaitXkE2N32VHSbhPmUMU5sZ0Rgm2qvoVN X-Google-Smtp-Source: AA0mqf6UILkLnAg3K0B/s4ZT3PS8xlvKo+75Mt3xZAPNk3dtVhvOz6TbOMr5/2Wd5nXqRr/Z2dkXDg== X-Received: by 2002:a17:90b:3444:b0:214:e1:cabe with SMTP id lj4-20020a17090b344400b0021400e1cabemr58132617pjb.153.1670064500459; Sat, 03 Dec 2022 02:48:20 -0800 (PST) Original-Received: from Kais-MacBook.local ([134.209.106.31]) by smtp.gmail.com with ESMTPSA id a6-20020aa794a6000000b0056bb6dc882fsm6515024pfl.130.2022.12.03.02.48.18 for <59794@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Dec 2022 02:48:19 -0800 (PST) In-Reply-To: (GNU bug Tracking System's message of "Sat, 03 Dec 2022 08:22:02 +0000") X-Mailman-Approved-At: Sat, 03 Dec 2022 15:32:51 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:249876 Archived-At: --=-=-= Content-Type: text/plain I did some investigation, but I was unable to identify the problem on the Emacs side. I traced the code, and found that even after [[view window] close] is called (nsterm.m L1626), [EmacsView resetCursorRects:] can still be invoked for that window. To my understanding, such calls are initiated by AppKit, not in the control of Emacs. Also, Emacs 27 and Emacs 28 (NS) also suffer from exactly the same issue (the same invalid access). I was unable to reproduce it using the Mac port. Given the severity of segfaults, I suspect it's very likely due to upstream Cocoa changes that only cause problems on newer versions of macOS. I'm currently using the trivial fix to prevent further data loss: --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Prevent-a-segfault-when-deleting-a-fullscreen-frame-.patch Content-Description: Prevent a segfault on the NS port >From 8ea35a8099f34f482d090ea8068e89f52dcd29ac Mon Sep 17 00:00:00 2001 From: Kai Ma Date: Sat, 3 Dec 2022 18:17:26 +0800 Subject: [PATCH] Prevent a segfault when deleting a fullscreen frame on NextStep. * nsterm.m ([EmacsView resetCursorRects:]): Be defensive when accessing FRAME_OUTPUT_DATA. --- src/nsterm.m | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 507f2a9e7d..c09f743ec7 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -6703,8 +6703,16 @@ - (BOOL)acceptsFirstResponder - (void)resetCursorRects { - NSRect visible = [self visibleRect]; - NSCursor *currentCursor = FRAME_POINTER_TYPE (emacsframe); + NSRect visible; + NSCursor *currentCursor; + + /* On macOS 13, [resetCursorRects:] could be called even after the + window is closed. */ + if (! emacsframe || ! FRAME_OUTPUT_DATA (emacsframe)) + return; + + visible = [self visibleRect]; + currentCursor = FRAME_POINTER_TYPE (emacsframe); NSTRACE ("[EmacsView resetCursorRects]"); if (currentCursor == nil) -- 2.37.1 (Apple Git-137.1) --=-=-=--