On Fri, 20 Nov 2009 12:32:41 +0100, Carl wrote: > On Thu, 19 Nov 2009 16:45:43 +0100, Adrian Perez de Castro wrote: > > The thing is that in notmuch_message_get_in_reply_to(), line 288, a NULL > > instance of Xapian::TermIterator is dereferenced. In my particular case, > > the culpript is a cache file of Claws-Mail, as seen in the following GDB > > session: > > Not quite NULL, (nor is it quite dereferencing---this is nasty C++ > overloading), but yeah, the idea is the same. We need to protect all of > our "calls" to this overloaded operator to not call it when the iterator > is equal to the value returned by termlist_end (). Well, of course you are right, it is an overloaded operator, which (unfortunately, IMHO) looks like a pointer dereference. That is exactly one of the things that I find more confusing about C++: it has features like operator overloading which look cool initially, but that in the end imply more complexity than needed. I can understand why you decided to wrap Xapian with a plain C API :) > On Thu, 19 Nov 2009 20:23:15 -0600, Jeffrey Ollie wrote: > > I straced some of the crashes, and the last file that was read before > > the crash was a malformed message. I've attached one of the messages. > > I've been using offlineimap to sync my gmail mailbox to my laptop so > > that I can use notmuch. offlineimap isn't the most stable program, > > but I'm not sure yet if offlineimap is causing the problem or if > > that's the way the message is in gmail. > > Thanks for the file. I never like to push code that I haven't tested, so > this was very helpful. > > Below is the patch that I just pushed which seems to do the trick. I can confirm that this patch avoids the segfault in my case, too. Thanks a lot for the quick fix. Best regards, -- Adrian Perez de Castro Igalia - Free Software Engineering