Errors after upgrade to 0.14

Austin Clements amdragon at MIT.EDU
Wed Aug 22 18:09:22 PDT 2012


Quoth myself on Aug 22 at  8:41 pm:
> Quoth Bart Bunting on Aug 23 at  9:36 am:
> > Good morning,
> > 
> > After upgrading to notmuch 014 I am seeing the following messages appear
> > in the messages buffer.
> > 
> > error in process filter: byte-code: Wrong type argument: number-or-marker-p, nil
> > error in process filter: Wrong type argument: number-or-marker-p, nil
> > 
> > I am also getting a repeating message in the minibuffer (I think) which
> > says something like "json read tail error".  Sorry that I am not more
> > specific as I use emacspeak and this message appears to repeat many
> > times interupting speech so I am not 100% sure of what it exactly says.
> 
> This is probably "json-readtable-error", which is, unfortunately,
> about the most generic error the JSON parser can give.
> 
> > My gut feeling is that it is happening when notmuch is updating the
> > database or something.
> > 
> > Is this expected behaviour?  It is particularly annoying for me as it
> > sends the speech synth crazy and crashes it for a period of about 30
> > seconds.
> > 
> > If it is expected then I will try and find a way to prevent emacspeak
> > from trying to read it.
> 
> This is definitely not expected behavior.  Does this happen when
> you're searching for messages or when you're viewing a thread?  Can
> you give any more details on what you're doing when you get this
> error?
> 
> Try doing M-x toggle-debug-on-error and then triggering the error.
> Hopefully Emacs will give you a buffer with a backtrace that will give
> us a better idea of where this is happening.

Actually, I might know what's going on here.  Based on your suspicion
about notmuch updating the database and assuming that this happens in
the search buffer, I think the parser error recovery code is leaving
the parser in a slightly invalid state, which causes the next
invocation to think it can consume more data when there is no more
data to consume.  I would expect that to give at most one readtable
error, but maybe there's something I'm overlooking.

Could you try the following one line patch?

diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 900235b..a09c0f6 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -375,7 +375,7 @@ resynchronize after an error by moving point."
 
   (if (eq (notmuch-json-next jp) 'value)
       ;; We're already at a value
-      nil
+      (if (eobp) 'retry nil)
     ;; Drive the state toward 'expect-value
     (skip-chars-forward " \t\r\n")
     (or (when (eobp) 'retry)



More information about the notmuch mailing list