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