From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Alan Third Newsgroups: gmane.emacs.bugs Subject: bug#25265: make-thread crashes in OS X 10.6 Date: Mon, 26 Dec 2016 13:09:17 +0000 Message-ID: <20161226130917.GA36471@breton.holly.idiocy.org> References: <83r34xxlke.fsf@gnu.org> <83d1ggxayi.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1482757823 6007 195.159.176.226 (26 Dec 2016 13:10:23 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 26 Dec 2016 13:10:23 +0000 (UTC) User-Agent: Mutt/1.7.1 (2016-10-04) Cc: charles@aurox.ch, 25265@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 26 14:10:19 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 1cLV2Z-00008u-Ux for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Dec 2016 14:10:12 +0100 Original-Received: from localhost ([::1]:50181 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cLV2e-0006hT-Rm for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Dec 2016 08:10:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37569) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cLV2T-0006eh-JA for bug-gnu-emacs@gnu.org; Mon, 26 Dec 2016 08:10:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cLV2Q-00065B-Dc for bug-gnu-emacs@gnu.org; Mon, 26 Dec 2016 08:10:05 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:40000) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cLV2Q-000655-Am for bug-gnu-emacs@gnu.org; Mon, 26 Dec 2016 08:10:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cLV2Q-0000gJ-6l for bug-gnu-emacs@gnu.org; Mon, 26 Dec 2016 08:10:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Dec 2016 13:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25265 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 25265-submit@debbugs.gnu.org id=B25265.14827577682567 (code B ref 25265); Mon, 26 Dec 2016 13:10:02 +0000 Original-Received: (at 25265) by debbugs.gnu.org; 26 Dec 2016 13:09:28 +0000 Original-Received: from localhost ([127.0.0.1]:55399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cLV1r-0000fK-Q8 for submit@debbugs.gnu.org; Mon, 26 Dec 2016 08:09:28 -0500 Original-Received: from mail-wj0-f170.google.com ([209.85.210.170]:35234) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cLV1p-0000f7-QY for 25265@debbugs.gnu.org; Mon, 26 Dec 2016 08:09:26 -0500 Original-Received: by mail-wj0-f170.google.com with SMTP id v7so300198297wjy.2 for <25265@debbugs.gnu.org>; Mon, 26 Dec 2016 05:09:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=CqZtIgCxyx3jLu8kjXhGs4WSFQzF08XR1p40lFZjyOc=; b=X1MzzOfpPC582XExTwiZQsItlqx2abgwxoWTRaKvpVyFLm1IgsUEcRDmagtsZevbfQ hP9QJqHgAKtbTq52LvrJoGiCoz8WN46iVqnx0pqjjrsNG/Hxob0c/xkkEetq3lnOcETy OJa+/4rIbwMSSVTiI/z6+4I8ytDxDJfziJwjNlCFZcvNavBmifAST8uAgY0ATLPWFTPh /CRFHJjDheXeJE0mI+3h5mN+Q112nSQXb2d5uxvdQISXQ6iGz8nqp3Vn4hc8RYmDDLVz 4HFIbOY6xNVEmGavy9QZ+Aqv125nAhwpKOjYz9hxCLMqFXVwaCmvrKkrELKQD3nJai80 hgMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=CqZtIgCxyx3jLu8kjXhGs4WSFQzF08XR1p40lFZjyOc=; b=lV1lK2Lfq31YM99x0vnE0Cn+0teIaAZFOtwPiQFqehT4vlpaw1rB8W+qJHFbJZMS7b 8ZFVGyQlH4jr3UkDDdeAKnMBiZzxO+r0djvUMXmkTj4c6CBGu60wN85hKLGethoycdTf dOfN+kyVYWy6hTHRCLNTTMYi4aGmNTWeksOg56IK+hsJLquzi0iRC+RAU3sxY7nOe07H dlHsfU6Z9Kv0PkNIr0jLQ5Hzv+TwyTp6bzXFQQ6qZ1cETCaGqcsR65vlWQkXKORktFE0 tbunE1/De6cYqhpLs1Ykl8FKPVLSHit49HyYuC6KGM3ctnN5aG32CfCmFP7snCTGG6Sz QutA== X-Gm-Message-State: AIkVDXIvhqXwCmlO8hWIBrWM1yP3dZfyvAtjuJp8Wy5BRK6cJI/M/iCvyFQAB0i0DGEOkg== X-Received: by 10.194.80.162 with SMTP id s2mr23054513wjx.52.1482757760216; Mon, 26 Dec 2016 05:09:20 -0800 (PST) Original-Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-413d-7770-bc2d-ff97.holly.idiocy.org. [2001:8b0:3f8:8129:413d:7770:bc2d:ff97]) by smtp.gmail.com with ESMTPSA id x140sm51359517wme.19.2016.12.26.05.09.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Dec 2016 05:09:19 -0800 (PST) Content-Disposition: inline In-Reply-To: <83d1ggxayi.fsf@gnu.org> 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:127452 Archived-At: On Sun, Dec 25, 2016 at 05:52:37PM +0200, Eli Zaretskii wrote: > > Date: Sat, 24 Dec 2016 19:51:13 +0200 > > From: Eli Zaretskii > > Cc: 25265@debbugs.gnu.org > > > > I see that ns_select calls block/unblock_input, which makes it unsafe > > when more than one thread is running. It's quite possible that this > > is the reason. > > > > I hope some NS expert could take a look at this and fix this. > > One idea is to write an implementation of block_input and > unblock_input that uses atomic increment and decrement functions, then > use those only in ns_select. > > Could someone with access to NS please try that? I’ve just tried the below patch and it doesn’t make any difference: it still hangs immediately. Back in October Ken Raeburn listed some things that need done in ns_select which are probably relevant: https://lists.gnu.org/archive/html/emacs-devel/2016-10/msg00525.html 2 files changed, 23 insertions(+) src/blockinput.h | 8 ++++++++ src/keyboard.c | 15 +++++++++++++++ modified src/blockinput.h @@ -49,10 +49,18 @@ extern volatile int interrupt_input_blocked; /* Begin critical section. */ +#ifdef NS_IMPL_COCOA +#include +#endif + INLINE void block_input (void) { +#ifdef NS_IMPL_COCOA + OSAtomicIncrement32(&interrupt_input_blocked); +#else interrupt_input_blocked++; +#endif } extern void unblock_input (void); modified src/keyboard.c @@ -54,6 +54,10 @@ along with GNU Emacs. If not, see . */ #include #endif /* not MSDOS */ +#ifdef NS_IMPL_COCOA +#include +#endif + #if defined USABLE_FIONREAD && defined USG5_4 # include #endif @@ -7183,7 +7187,18 @@ unblock_input_to (int level) void unblock_input (void) { +#ifdef NS_IMPL_COCOA + OSAtomicDecrement32(&interrupt_input_blocked); + if (interrupt_input_blocked == 0) + { + if (pending_signals && !fatal_error_in_progress) + process_pending_signals (); + } + else if (interrupt_input_blocked < 0) + emacs_abort (); +#else unblock_input_to (interrupt_input_blocked - 1); +#endif } /* Undo any number of BLOCK_INPUT calls, -- Alan Third