From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#25171: Error in thread causes Emacs to abort Date: Sun, 11 Dec 2016 18:13:34 +0200 Message-ID: <83mvg2e95d.fsf@gnu.org> References: <87wpf6k0j0.fsf@linux-m68k.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1481472858 20978 195.159.176.226 (11 Dec 2016 16:14:18 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 11 Dec 2016 16:14:18 +0000 (UTC) Cc: 25171@debbugs.gnu.org To: Andreas Schwab , Tom Tromey Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Dec 11 17:14:11 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 1cG6lL-0003ms-Qm for geb-bug-gnu-emacs@m.gmane.org; Sun, 11 Dec 2016 17:14:07 +0100 Original-Received: from localhost ([::1]:56148 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cG6lP-00011o-QV for geb-bug-gnu-emacs@m.gmane.org; Sun, 11 Dec 2016 11:14:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35372) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cG6lK-00011g-Lt for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2016 11:14:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cG6lG-0008Cu-LK for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2016 11:14:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:51117) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cG6lG-0008Cq-HC for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2016 11:14:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cG6lG-0007E6-At for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2016 11:14:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 11 Dec 2016 16:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25171 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 25171-submit@debbugs.gnu.org id=B25171.148147279127715 (code B ref 25171); Sun, 11 Dec 2016 16:14:02 +0000 Original-Received: (at 25171) by debbugs.gnu.org; 11 Dec 2016 16:13:11 +0000 Original-Received: from localhost ([127.0.0.1]:38283 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cG6kR-0007Cx-71 for submit@debbugs.gnu.org; Sun, 11 Dec 2016 11:13:11 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:44312) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cG6kP-0007Cl-CC for 25171@debbugs.gnu.org; Sun, 11 Dec 2016 11:13:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cG6kG-0007yd-9W for 25171@debbugs.gnu.org; Sun, 11 Dec 2016 11:13:04 -0500 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44249) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cG6kG-0007yW-5o; Sun, 11 Dec 2016 11:13:00 -0500 Original-Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3135 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cG6kF-0007Kf-Dg; Sun, 11 Dec 2016 11:12:59 -0500 In-reply-to: <87wpf6k0j0.fsf@linux-m68k.org> (message from Andreas Schwab on Sun, 11 Dec 2016 15:23:15 +0100) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] 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:126865 Archived-At: > From: Andreas Schwab > Date: Sun, 11 Dec 2016 15:23:15 +0100 > > When the function called by make-thread throws an error while Emacs is > reading from keyboard then it aborts in signal_or_quit because > waiting_for_input is non-zero. Right, thanks. I think I fixed that now; the patch is below. Tom, could you perhaps look at the patch and comment? I'm puzzled why you didn't do this in the first place, like you did with waiting_for_user_input_p. Are there any issues here that I'm missing? TIA diff --git a/src/keyboard.c b/src/keyboard.c index 01b9b3c..cc78548 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -148,9 +148,6 @@ static Lisp_Object regular_top_level_message; static sys_jmp_buf getcjmp; -/* True while doing kbd input. */ -bool waiting_for_input; - /* True while displaying for echoing. Delays C-g throwing. */ static bool echoing; @@ -322,10 +319,6 @@ static ptrdiff_t echo_length (void); /* Incremented whenever a timer is run. */ unsigned timers_run; -/* Address (if not 0) of struct timespec to zero out if a SIGIO interrupt - happens. */ -struct timespec *input_available_clear_time; - /* True means use SIGIO interrupts; false means use CBREAK mode. Default is true if INTERRUPT_INPUT is defined. */ bool interrupt_input; diff --git a/src/keyboard.h b/src/keyboard.h index a5ed5e1..5084c39 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -415,13 +415,6 @@ extern void unuse_menu_items (void); #define EVENT_HEAD_KIND(event_head) \ (Fget ((event_head), Qevent_kind)) -/* True while doing kbd input. */ -extern bool waiting_for_input; - -/* Address (if not 0) of struct timespec to zero out if a SIGIO interrupt - happens. */ -extern struct timespec *input_available_clear_time; - extern bool ignore_mouse_drag_p; extern Lisp_Object parse_modifiers (Lisp_Object); diff --git a/src/thread.h b/src/thread.h index 6174032..f10824f 100644 --- a/src/thread.h +++ b/src/thread.h @@ -155,6 +155,15 @@ struct thread_state int m_waiting_for_user_input_p; #define waiting_for_user_input_p (current_thread->m_waiting_for_user_input_p) + /* True while doing kbd input. */ + bool m_waiting_for_input; +#define waiting_for_input (current_thread->m_waiting_for_input) + + /* Address (if not 0) of struct timespec to zero out if a SIGIO interrupt + happens. */ + struct timespec *m_input_available_clear_time; +#define input_available_clear_time (current_thread->m_input_available_clear_time) + /* The OS identifier for this thread. */ sys_thread_t thread_id;