From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tassilo Horn Newsgroups: gmane.emacs.bugs Subject: bug#21313: 25.0.50; Strange errors from dbus-handle-event Date: Fri, 16 Oct 2015 09:45:08 +0200 Message-ID: <871tcv5kaj.fsf@gnu.org> References: <877foo4nkd.fsf@gnu.org> <8737xtt8wt.fsf@gnu.org> <834mi95bx1.fsf@gnu.org> <87twq9roxn.fsf@gnu.org> <83wpv53rjn.fsf@gnu.org> <87h9m9rmgk.fsf@gmx.de> <87wpv4qzm2.fsf@gnu.org> <87a8s0v1lp.fsf@gmx.de> <87twq8gyk0.fsf@gnu.org> <87lhbk47hb.fsf@gnu.org> <83d1ww4416.fsf@gnu.org> <878u75rctw.fsf@gnu.org> <836129xtx8.fsf@gnu.org> <876129gs2a.fsf@gnu.org> <83twptw81l.fsf@gnu.org> <87eggwuzvi.fsf@gnu.org> <83d1wg8403.fsf@gnu.org> <87twps9grg.fsf@gnu.org> <837fmn9as2.fsf@gnu.org> <87pp0fo1mo.fsf@gnu.org> <83pp0f70un.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1444981605 4895 80.91.229.3 (16 Oct 2015 07:46:45 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 16 Oct 2015 07:46:45 +0000 (UTC) Cc: michael.albinus@gmx.de, 21313@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Oct 16 09:46:30 2015 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 1ZmziT-0004TT-Ka for geb-bug-gnu-emacs@m.gmane.org; Fri, 16 Oct 2015 09:46:17 +0200 Original-Received: from localhost ([::1]:51404 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmziS-0001u3-Re for geb-bug-gnu-emacs@m.gmane.org; Fri, 16 Oct 2015 03:46:16 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54057) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmziJ-0001nx-UO for bug-gnu-emacs@gnu.org; Fri, 16 Oct 2015 03:46:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZmziE-0005nU-UC for bug-gnu-emacs@gnu.org; Fri, 16 Oct 2015 03:46:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:34075) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmziE-0005nH-RY for bug-gnu-emacs@gnu.org; Fri, 16 Oct 2015 03:46:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1ZmziE-0003C8-EK for bug-gnu-emacs@gnu.org; Fri, 16 Oct 2015 03:46:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Tassilo Horn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 16 Oct 2015 07:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21313 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 21313-submit@debbugs.gnu.org id=B21313.144498151512218 (code B ref 21313); Fri, 16 Oct 2015 07:46:02 +0000 Original-Received: (at 21313) by debbugs.gnu.org; 16 Oct 2015 07:45:15 +0000 Original-Received: from localhost ([127.0.0.1]:53016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZmzhT-0003B0-4m for submit@debbugs.gnu.org; Fri, 16 Oct 2015 03:45:15 -0400 Original-Received: from out2-smtp.messagingengine.com ([66.111.4.26]:47388) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZmzhQ-0003Ar-2y for 21313@debbugs.gnu.org; Fri, 16 Oct 2015 03:45:12 -0400 Original-Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 9A832208EC for <21313@debbugs.gnu.org>; Fri, 16 Oct 2015 03:45:11 -0400 (EDT) Original-Received: from frontend1 ([10.202.2.160]) by compute2.internal (MEProxy); Fri, 16 Oct 2015 03:45:11 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=smtpout; bh=BigEyxZtpMxHRuRMiWdCmtpbzkc=; b=fMuf8 Oc6F5+usbopyIr0ZzmXV40p5kZZUAL5UmbPQJQQ6S+MI/hOkJqKNLzj1syvgg1Ji /1TQwdxgePYbe0wWH5zR0MomdpUHJV2c16yZkIB5nA1nA5jYw+iZHrh2TUHJWlbU 9eINfExqY8FWzYxJ6N2h4iZprmkomSACHVYaLs= X-Sasl-enc: 1tN0ZM6Wlvqee+ksw8HBQujBhGfebnJkqZByjWd9kO8g 1444981511 Original-Received: from thinkpad-t440p (unknown [2.163.5.132]) by mail.messagingengine.com (Postfix) with ESMTPA id 67262C00013; Fri, 16 Oct 2015 03:45:10 -0400 (EDT) In-Reply-To: <83pp0f70un.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 16 Oct 2015 10:02:08 +0300") User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.0.50 (gnu/linux) 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: 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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:107666 Archived-At: Eli Zaretskii writes: >> > I think I found the problem: the call to Fformat eventually calls >> > print_object, which calls QUIT, which resets quit-flag. >> >> I've seen it now. Well, that's not what I would have expected. > > You should expect any potentially prolonged operation to call QUIT > somewhere in its loop. That's standard Emacs coding practice, meant > to make Emacs more responsive. Ok, so QUIT; in C code basically means, here is a position where the current lisp execution could be aborted. If it weren't in print_object(), then you couldn't for example abort printing a list with gazillions of elements and emacs would get stuck while doing so. Looking at QUIT, the difference between my original code and the new one is just when process_quit_flag() is called. process_quit_flag() always signals quit. So with the new code, the signal is handled by the right recipient. Who consumed (and discarded) it before? Well, I think I just remember that I want to bind Qinhibit_quit to Qt whenever I need to call Lisp functions from C. >> > So you need to change the beginning of read_char like this: >> > >> > ptrdiff_t count = SPECPDL_INDEX (); >> > specbind (Qinhibit_quit, Qt); >> > AUTO_STRING (format, "%S"); >> > printf ("record_char: %s\n", SSDATA (CALLN (Fformat, format, c))); >> > unbind_to (count, Qnil); >> >> Yes, that works. So that's the C version of (let ((inhibit-quit t)) >> ...). So specbind creates a dynamic binding, and with unbind_to you >> pop entries up to a given index again, right? > > Yes. See Flet (modulo the clutter) for a definitive evidence. > > (Btw, unwind-protect is implemented using the same mechanism in C.) Seen that, thanks! Bye, Tassilo