Re: show a single message in a huge thread
On Fri, Jun 11 2021, Jonathan Wilner wrote: > I definitely also have this problem with large threads - big time hangs > using Notmuch in Emacs. My simple tests indicate that it happens in Emacs, > not using Notmuch at the command line, though that can also take quite a > long time to return. > > I'm suspicious that there's something with HTML parsing - does that seem > possible? It might also make sense if Delta Chat is giving you HTML versus > plaintext. one thing you could also try is to press '<' in that notmuch show buffer adn observe how long it takes to drop indentation of the whole buffer (i don't remember how it does that) and then repres '<' and see whether re-indenting takes much more time dropping indentation. in notmuch show there is (defvar-local notmuch-show-indent-content t) I tried just to M-: (setq notmuch-show-indent-content nil) -- that did not have any effect... IIRC the (indent-rigidly ...) executions take quite a lot of time but is that significant or not here... Tomi > > > > On Thu, Jun 3, 2021 at 12:55 AM Alan Schmitt > wrote: > >> Hello, >> >> On 2021-06-02 09:18, David Bremner writes: >> >> > The code I posted worked fine for me for one message from a thread of >> > 323 messages. >> >> The thread that used to crash (before your patch) was from DeltaChat, >> which is an email-based chat app. The thread it produces are like lists >> more than trees. So I guess the depth of the tree is what matters. >> >> Best, >> >> Alan >> ___ >> notmuch mailing list -- notmuch@notmuchmail.org >> To unsubscribe send an email to notmuch-le...@notmuchmail.org >> > ___ > notmuch mailing list -- notmuch@notmuchmail.org > To unsubscribe send an email to notmuch-le...@notmuchmail.org ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
I definitely also have this problem with large threads - big time hangs using Notmuch in Emacs. My simple tests indicate that it happens in Emacs, not using Notmuch at the command line, though that can also take quite a long time to return. I'm suspicious that there's something with HTML parsing - does that seem possible? It might also make sense if Delta Chat is giving you HTML versus plaintext. On Thu, Jun 3, 2021 at 12:55 AM Alan Schmitt wrote: > Hello, > > On 2021-06-02 09:18, David Bremner writes: > > > The code I posted worked fine for me for one message from a thread of > > 323 messages. > > The thread that used to crash (before your patch) was from DeltaChat, > which is an email-based chat app. The thread it produces are like lists > more than trees. So I guess the depth of the tree is what matters. > > Best, > > Alan > ___ > notmuch mailing list -- notmuch@notmuchmail.org > To unsubscribe send an email to notmuch-le...@notmuchmail.org > ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
Hello, On 2021-06-02 09:18, David Bremner writes: > The code I posted worked fine for me for one message from a thread of > 323 messages. The thread that used to crash (before your patch) was from DeltaChat, which is an email-based chat app. The thread it produces are like lists more than trees. So I guess the depth of the tree is what matters. Best, Alan signature.asc Description: PGP signature ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
On Wed, Jun 02 2021, David Bremner wrote: > David Bremner writes: > >> Alan Schmitt writes: >> >>> Hello, >>> >>> On 2021-06-01 15:33, David Bremner writes: >>> > Is this a bug of notmuch-emacs? Is there a way to display a single > message independently of its context? > I'm not sure what the best UI is, but here is a start: (defun notmuch-show-single-message (query) (interactive "sQuery: ") (message query) (let ((notmuch-show-indent-messages-width 0) (notmuch-show-only-matching-messages t)) (notmuch-show query))) >>> >>> Thank you for the suggestion, unfortunately I get a very similar error. >>> I found the id of the message I want, and when I run this function, I >>> get this backtrace. >>> >> >> The code I posted worked fine for me for one message from a thread of >> 323 messages. It could be a I need a really giant thread to test, or >> perhaps the structure of the individual messages matters also. The long >> threads I have are from Debian mailing lists, so the message structure >> tests to be be mainly one part of plain text. > > I played with this some more, and I think I understand what the issue > is, although I still cannot duplicate the crash. By unless given the max-lisp-eval-depth is a variable defined in ‘C source code’. Its value is 800 Started second emacs, tried to set max-lisp-eval-depth to 10 (changed to 100, cannot go lower) then run notmuch (ya! you can do that -- no go w/ vm or gnus!) . I have too short threads to get that crashing :/ but perhaps someone else(tm) is luckier... ;/ Tomi > "--part" option the CLI returns the whole thread structure, even if it > does not populate it. So there is a big tree of empty lists, and > recursively traversing this tree is what is crashing. In principle > passing "--part=0" to the CLI should turn off this behaviour, but I > don't know how much needs to be changed on the emacs side to display the > result properly. ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
David Bremner writes: > Alan Schmitt writes: > >> Hello, >> >> On 2021-06-01 15:33, David Bremner writes: >> Is this a bug of notmuch-emacs? Is there a way to display a single message independently of its context? >>> >>> I'm not sure what the best UI is, but here is a start: >>> >>> (defun notmuch-show-single-message (query) >>> (interactive "sQuery: ") >>> (message query) >>> (let ((notmuch-show-indent-messages-width 0) >>> (notmuch-show-only-matching-messages t)) >>> (notmuch-show query))) >> >> Thank you for the suggestion, unfortunately I get a very similar error. >> I found the id of the message I want, and when I run this function, I >> get this backtrace. >> > > The code I posted worked fine for me for one message from a thread of > 323 messages. It could be a I need a really giant thread to test, or > perhaps the structure of the individual messages matters also. The long > threads I have are from Debian mailing lists, so the message structure > tests to be be mainly one part of plain text. I played with this some more, and I think I understand what the issue is, although I still cannot duplicate the crash. By unless given the "--part" option the CLI returns the whole thread structure, even if it does not populate it. So there is a big tree of empty lists, and recursively traversing this tree is what is crashing. In principle passing "--part=0" to the CLI should turn off this behaviour, but I don't know how much needs to be changed on the emacs side to display the result properly. ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
Alan Schmitt writes: > Hello, > > On 2021-06-01 15:33, David Bremner writes: > >>> Is this a bug of notmuch-emacs? Is there a way to display a single >>> message independently of its context? >>> >> >> I'm not sure what the best UI is, but here is a start: >> >> (defun notmuch-show-single-message (query) >> (interactive "sQuery: ") >> (message query) >> (let ((notmuch-show-indent-messages-width 0) >> (notmuch-show-only-matching-messages t)) >> (notmuch-show query))) > > Thank you for the suggestion, unfortunately I get a very similar error. > I found the id of the message I want, and when I run this function, I > get this backtrace. > The code I posted worked fine for me for one message from a thread of 323 messages. It could be a I need a really giant thread to test, or perhaps the structure of the individual messages matters also. The long threads I have are from Debian mailing lists, so the message structure tests to be be mainly one part of plain text. d ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
Hello, On 2021-06-01 15:33, David Bremner writes: >> Is this a bug of notmuch-emacs? Is there a way to display a single >> message independently of its context? >> > > I'm not sure what the best UI is, but here is a start: > > (defun notmuch-show-single-message (query) > (interactive "sQuery: ") > (message query) > (let ((notmuch-show-indent-messages-width 0) > (notmuch-show-only-matching-messages t)) > (notmuch-show query))) Thank you for the suggestion, unfortunately I get a very similar error. I found the id of the message I want, and when I run this function, I get this backtrace. Debugger entered--Lisp error: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’") #f(compiled-function (tree) #)((nil ((nil ((nil ((nil ...))) (nil ((nil ... mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil (...)) (nil (... notmuch-show-insert-thread(((nil ((nil ((nil (...)) (nil (...))) 195) notmuch-show-insert-tree((nil ((nil ((nil ((nil ...) (nil ...))) 194) #f(compiled-function (tree) #)((nil ((nil ((nil ((nil ...) (nil ... mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil (... ... notmuch-show-insert-thread(((nil ((nil ((nil (... ...))) 194) notmuch-show-insert-tree((nil ((nil ((nil ((nil ...))) 193) #f(compiled-function (tree) #)((nil ((nil ((nil ((nil ... mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil (... notmuch-show-insert-thread(((nil ((nil ((nil (...))) 193) …many line elided… notmuch-show-insert-tree((nil ((nil ((nil nil) (nil ((nil ...) (nil nil))) 1) #f(compiled-function (tree) #)((nil ((nil ((nil nil) (nil ((nil ...) (nil nil mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil nil) (nil (... ... notmuch-show-insert-thread(((nil ((nil ((nil nil) (nil (... ...))) 1) notmuch-show-insert-tree((nil ((nil ((nil ((nil nil) (nil ...))) 0) #f(compiled-function (tree) #)((nil ((nil ((nil ((nil nil) (nil ... mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil (... ... notmuch-show-insert-thread(((nil ((nil ((nil (... ...))) 0) #f(compiled-function (thread) #)(((nil ((nil ((nil (... ... mapc(#f(compiled-function (thread) #) (((nil ((nil ((nil ... notmuch-show-insert-forestnil ((nil ((nil ... notmuch-show--build-buffer() notmuch-show("id:mr.mcs31ym4nf_.pqmximnh...@petitepomme.net") (let ((notmuch-show-indent-messages-width 0) (notmuch-show-only-matching-messages t)) (notmuch-show query)) notmuch-show-single-message("id:mr.mcs31ym4nf_.pqmximnh...@petitepomme.net") funcall-interactively(notmuch-show-single-message "id:mr.mcs31ym4nf_.pqmximnh...@petitepomme.net") call-interactively(notmuch-show-single-message record nil) command-execute(notmuch-show-single-message record) This seems to be the same problem as when hitting RET on a tree-view buffer. Some huge forest is built, instead of showing the single message. (Or maybe the forest is built before deciding to show only the message, but there is a stack overflow before that.) Best, Alan signature.asc Description: PGP signature ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
On Tue, Jun 01 2021, David Bremner wrote: > Alan Schmitt writes: > >> Hello, >> >> On 2021-05-28 16:16, Alan Schmitt writes: >> >>> Thank you for the suggestion. Here is what I did: >>> - run the search >>> - execute notmuch-tree-from-search-current-query >>> - hit RET on a message deep in the thread >>> - I get this error >>> >>> Debugger entered--Lisp error: (error "Lisp nesting exceeds >>> ‘max-lisp-eval-depth’") >> >> Is this a bug of notmuch-emacs? Is there a way to display a single >> message independently of its context? >> > > I'm not sure what the best UI is, but here is a start: > > (defun notmuch-show-single-message (query) > (interactive "sQuery: ") > (message query) > (let ((notmuch-show-indent-messages-width 0) > (notmuch-show-only-matching-messages t)) > (notmuch-show query))) It used to be that if a search returned only a single message that message would just be displayed directly, by passing the thread view. I'm not sure when/why that changed. jamie. ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
Alan Schmitt writes: > Hello, > > On 2021-05-28 16:16, Alan Schmitt writes: > >> Thank you for the suggestion. Here is what I did: >> - run the search >> - execute notmuch-tree-from-search-current-query >> - hit RET on a message deep in the thread >> - I get this error >> >> Debugger entered--Lisp error: (error "Lisp nesting exceeds >> ‘max-lisp-eval-depth’") > > Is this a bug of notmuch-emacs? Is there a way to display a single > message independently of its context? > I'm not sure what the best UI is, but here is a start: (defun notmuch-show-single-message (query) (interactive "sQuery: ") (message query) (let ((notmuch-show-indent-messages-width 0) (notmuch-show-only-matching-messages t)) (notmuch-show query))) ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
Hello, On 2021-05-28 16:16, Alan Schmitt writes: > Thank you for the suggestion. Here is what I did: > - run the search > - execute notmuch-tree-from-search-current-query > - hit RET on a message deep in the thread > - I get this error > > Debugger entered--Lisp error: (error "Lisp nesting exceeds > ‘max-lisp-eval-depth’") Is this a bug of notmuch-emacs? Is there a way to display a single message independently of its context? Thanks, Alan signature.asc Description: PGP signature ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
On Fri, May 28 2021, alan.schm...@polytechnique.org wrote: > Hello, > > I want to see a message in a huge thread (too big for notmuch to > display). To find it, I switch to unthreaded mode, I select the message > (I hit RET), but then notmuch tries to show all the other messages as > well (which makes it hang as the thread is too big, and one of the > message results in an error "symbolp: Lisp nesting exceeds > ‘max-lisp-eval-depth’", which prevents later messages from being > displayed). > > I tried doing C-u RET, but I immediately get a similar error: > "notmuch-show-insert-thread: Lisp nesting exceeds > ‘max-lisp-eval-depth’". I will concur that notmuch-emacs has very poor performance with really long threads. ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: show a single message in a huge thread
Hello, On 2021-05-28 09:37, David Bremner writes: > Did you try M-x notuch-tree ? > > It displays messages one at a time. > > Starting from notmuch-search-mode, you could > > - use Z to switch to tree mode, then select the message you > want. > > - If that is too tedious, use 'z' to search for something more precise, > and report the results in tree-mode. Thank you for the suggestion. Here is what I did: - run the search - execute notmuch-tree-from-search-current-query - hit RET on a message deep in the thread - I get this error Debugger entered--Lisp error: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’") mapc(#f(compiled-function (tree) #) ((nil nil))) notmuch-show-insert-thread(((nil nil)) 247) notmuch-show-insert-tree((nil ((nil nil))) 246) #f(compiled-function (tree) #)((nil ((nil nil mapc(#f(compiled-function (tree) #) ((nil ((nil nil))) (nil ((nil ((nil nil) (nil (... ... notmuch-show-insert-thread(((nil ((nil nil))) (nil ((nil ((nil nil) (nil (... ...))) 246) notmuch-show-insert-tree((nil ((nil ((nil nil))) (nil ((nil ((nil nil) (nil ...))) 245) #f(compiled-function (tree) #)((nil ((nil ((nil nil))) (nil ((nil ((nil nil) (nil ... mapc(#f(compiled-function (tree) #) ((nil nil) (nil ((nil ((nil nil))) (nil ((nil (... ... notmuch-show-insert-thread(((nil nil) (nil ((nil ((nil nil))) (nil ((nil (... ...))) 245) ...many lines elided... notmuch-show-insert-tree((nil ((nil nil) (nil ((nil ((nil ...))) (nil nil) 2) #f(compiled-function (tree) #)((nil ((nil nil) (nil ((nil ((nil ...))) (nil nil)) mapc(#f(compiled-function (tree) #) ((nil ((nil nil) (nil ((nil (...)) (nil nil))) notmuch-show-insert-thread(((nil ((nil nil) (nil ((nil (...)) (nil nil)) 2) notmuch-show-insert-tree((nil ((nil ((nil nil) (nil ((nil ...) (nil nil))) 1) #f(compiled-function (tree) #)((nil ((nil ((nil nil) (nil ((nil ...) (nil nil mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil nil) (nil (... ... notmuch-show-insert-thread(((nil ((nil ((nil nil) (nil (... ...))) 1) notmuch-show-insert-tree((nil ((nil ((nil ((nil nil) (nil ...))) 0) #f(compiled-function (tree) #)((nil ((nil ((nil ((nil nil) (nil ... mapc(#f(compiled-function (tree) #) ((nil ((nil ((nil (... ... notmuch-show-insert-thread(((nil ((nil ((nil (... ...))) 0) #f(compiled-function (thread) #)(((nil ((nil ((nil (... ... mapc(#f(compiled-function (thread) #) (((nil ((nil ((nil ... notmuch-show-insert-forestnil ((nil ((nil ... notmuch-show--build-buffer() notmuch-show("id:mr.mcs31ym4nf_.pqmximnh...@petitepomme.net") notmuch-tree-show-message-in() notmuch-tree-show-message(nil) funcall-interactively(notmuch-tree-show-message nil) call-interactively(notmuch-tree-show-message nil nil) command-execute(notmuch-tree-show-message) I’m afraid I may have an option asking for the context (as a big forest is built), but I don’t know which one or how to disable it. Best, Alan signature.asc Description: PGP signature ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org