Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id E3C61429E5F for ; Tue, 17 Jan 2012 10:33:54 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c0APzlzo2kl7 for ; Tue, 17 Jan 2012 10:33:54 -0800 (PST) Received: from rodney.id.au (rodney.id.au [178.79.159.183]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id 11565429E3B for ; Tue, 17 Jan 2012 10:33:54 -0800 (PST) Received: from 232.26-200-80.adsl-dyn.isp.belgacom.be ([80.200.26.232] helo=boekje.home) by rodney.id.au with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.77) (envelope-from ) id 1RnDqy-0008Cr-I1; Tue, 17 Jan 2012 18:33:52 +0000 From: Rodney Lorrimar To: Aaron Ecay , notmuch@notmuchmail.org Subject: Re: Infinite loop in emacs interface In-Reply-To: References: <87pqei8d0h.fsf@boekje.home> User-Agent: Notmuch/0.11 (http://notmuchmail.org) Emacs/24.0.92.1 (x86_64-pc-linux-gnu) Date: Tue, 17 Jan 2012 19:35:58 +0100 Message-ID: <87y5t6kwhd.fsf@boekje.home> MIME-Version: 1.0 Content-Type: text/plain X-SA-Exim-Connect-IP: 80.200.26.232 X-SA-Exim-Mail-From: rodney@rodney.id.au X-SA-Exim-Scanned: No (on rodney.id.au); SAEximRunCond expanded to false X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2012 18:33:55 -0000 On Tue, 17 Jan 2012 12:37:52 -0500, Aaron Ecay wrote: > After converting the mbox file to Maildir and adding it to my mailstore, > I cannot reproduce the loop. (The versions of notmuch and emacs I used > are close to the ones you have, but not an exact match, so it may be > something subtle about those versions. I can investigate > more carefully if it seems like this is the case.) Hi Aaron, That's a pity. I am using Julien Danjou's emacs-snapshot package for debian and actually I only noticed the infinite loop on this thread after restarting emacs some unknown time after the package was upgraded. The package was upgraded from 20120105 to 20120111. I haven't been using this snapshot of emacs for very long, so possibly the problem might occur with other threads. To test this thread, I copied it out of my maildirs with mutt, deleted the original messages, ran "notmuch new", copied the mbox thread back into my maildirs, then ran "notmuch new" again, and the problem was still there. > If you do: > M-x set-variable RET debug-on-quit RET t RET > then trigger the loop and press C-g, you should get a buffer showing a > backtrace of the lisp stack. What does that say? I copied 4 backtraces which appear below. I pressed the 'a' key when viewing the thread, then C-g. They were run with notmuch git commit efa5d6cb32. Since then I went back to 0.11 because it seems like the reply function stopped working. Cheers, Rodney Debugger entered--Lisp error: (quit) mapc((lambda (del-tag) (setq result-tags (delete del-tag result-tags))) ("inbox")) (let ((result-tags (copy-sequence current-tags))) (mapc (lambda (del-tag) (setq result-tags (delete del-tag result-tags))) del-tags) result-tags) notmuch-show-del-tags-worker(nil ("inbox")) (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-show-del-tags-worker current-tags toremove))) (unless (equal current-tags new-tags) (apply (quote notmuch-tag) (notmuch-show-get-message-id) (mapcar (lambda (s) (concat "-" s)) toremove)) (notmuch-show-set-tags new-tags))) notmuch-show-remove-tag("inbox") (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next)))) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (cl-block-wrapper (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil)) (block nil (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (loop do (notmuch-show-remove-tag "inbox") until (not (notmuch-show-goto-message-next))) notmuch-show-archive-thread-internal(t) notmuch-show-archive-thread() call-interactively(notmuch-show-archive-thread nil nil) Debugger entered--Lisp error: (quit) notmuch-show-move-to-message-top() (save-excursion (notmuch-show-move-to-message-top) (get-text-property (point) :notmuch-message-properties)) notmuch-show-get-message-properties() (or props (notmuch-show-get-message-properties)) (let ((props (or props (notmuch-show-get-message-properties)))) (plist-get props prop)) notmuch-show-get-prop(:tags) notmuch-show-get-tags() (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-show-del-tags-worker current-tags toremove))) (unless (equal current-tags new-tags) (apply (quote notmuch-tag) (notmuch-show-get-message-id) (mapcar (lambda (s) (concat "-" s)) toremove)) (notmuch-show-set-tags new-tags))) notmuch-show-remove-tag("inbox") (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next)))) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (cl-block-wrapper (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil)) (block nil (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (loop do (notmuch-show-remove-tag "inbox") until (not (notmuch-show-goto-message-next))) notmuch-show-archive-thread-internal(t) notmuch-show-archive-thread() call-interactively(notmuch-show-archive-thread nil nil) Debugger entered--Lisp error: (quit) notmuch-show-move-to-message-top() (save-excursion (notmuch-show-move-to-message-top) (get-text-property (point) :notmuch-message-properties)) notmuch-show-get-message-properties() (or props (notmuch-show-get-message-properties)) (let ((props (or props (notmuch-show-get-message-properties)))) (plist-get props prop)) notmuch-show-get-prop(:tags) notmuch-show-get-tags() (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-show-del-tags-worker current-tags toremove))) (unless (equal current-tags new-tags) (apply (quote notmuch-tag) (notmuch-show-get-message-id) (mapcar (lambda (s) (concat "-" s)) toremove)) (notmuch-show-set-tags new-tags))) notmuch-show-remove-tag("inbox") (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next)))) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (cl-block-wrapper (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil)) (block nil (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (loop do (notmuch-show-remove-tag "inbox") until (not (notmuch-show-goto-message-next))) notmuch-show-archive-thread-internal(t) notmuch-show-archive-thread() call-interactively(notmuch-show-archive-thread nil nil) Debugger entered--Lisp error: (quit) (while (not (setq r (get-text-property (point) :notmuch-message-extent))) (backward-char)) (save-excursion (while (not (setq r (get-text-property (point) :notmuch-message-extent))) (backward-char))) (let (r) (save-excursion (while (not (setq r (get-text-property (point) :notmuch-message-extent))) (backward-char))) r) notmuch-show-message-extent() (cdr (notmuch-show-message-extent)) notmuch-show-message-bottom() (goto-char (notmuch-show-message-bottom)) notmuch-show-move-to-message-bottom() (let ((start (point))) (notmuch-show-move-to-message-bottom) (if (not (eobp)) t (goto-char start) nil)) notmuch-show-goto-message-next() (not (notmuch-show-goto-message-next)) (not (not (notmuch-show-goto-message-next))) (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next)))) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (cl-block-wrapper (catch (quote --cl-block-nil--) (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil)) (block nil (while (progn (notmuch-show-remove-tag "inbox") (not (not (notmuch-show-goto-message-next))))) nil) (loop do (notmuch-show-remove-tag "inbox") until (not (notmuch-show-goto-message-next))) notmuch-show-archive-thread-internal(t) notmuch-show-archive-thread() call-interactively(notmuch-show-archive-thread nil nil)