* Segfault searching for tags
@ 2009-11-18 18:00 Jeffrey Ollie
2009-11-19 15:45 ` Adrian Perez de Castro
0 siblings, 1 reply; 9+ messages in thread
From: Jeffrey Ollie @ 2009-11-18 18:00 UTC (permalink / raw)
To: notmuch
Getting the following segfault with 306635c2 on Fedora 12. Seems to
be happening with any 'tag:' search that returns results. For
example, 'notmuch search tag:inbox' and 'notmuch search tag:unread'
segfault but 'notmuch search tag:nosuchtag', 'notmuch search
subject:logwatch' and 'notmuch search video' seem to work fine.
Core was generated by `/usr/bin/notmuch search --sort=oldest-first tag:inbox'.
Program terminated with signal 11, Segmentation fault.
\#0 Xapian::TermIterator::operator* (this=<value optimized out>)
at api/omtermlistiterator.cc:78
78 RETURN(internal->get_termname());
Current language: auto
The current source language is "auto; currently c++".
Thread 1 (Thread 15005):
\#0 Xapian::TermIterator::operator* (this=<value optimized out>)
at api/omtermlistiterator.cc:78
No locals.
\#1 0x000000000040d213 in _notmuch_message_get_in_reply_to (message=0x1594f70)
at lib/message.cc:288
prefix = 0x415b77 "XREPLYTO"
prefix_len = 0
i = {internal = {dest = 0x0}}
in_reply_to = ""
\#2 0x000000000040f842 in _resolve_thread_relationships (thread=0x1595a00)
at lib/thread.cc:157
node = 0x1596130
message = 0x1594f70
parent = 0x7fff2cade9c8
prev = 0x1595cd0
in_reply_to = <value optimized out>
\#3 _notmuch_thread_create (thread=0x1595a00) at lib/thread.cc:285
thread = 0x1595a00
thread_id_query = 0x158beb0
matched_query = <value optimized out>
messages = 0x7fff2cade948
message = <value optimized out>
thread_id_query_string = <value optimized out>
matched_query_string = <value optimized out>
\#4 0x000000000040f3d0 in notmuch_query_search_threads (
query=<value optimized out>, first=<value optimized out>,
max_threads=<value optimized out>) at lib/query.cc:217
threads = 0x158b5f0
thread = 0x6e00000077
messages = 0x158b7c0
message = 0x158c580
thread_id = 0x158b890 "2065b08615b4cbbb22d9ee874bb84d3e"
seen = 0x15454a0
messages_seen = 0
threads_seen = 0
\#5 0x00000000004089a1 in do_search_threads (ctx=0x1543140, query=
0x7fff2cade8a0, sort=NOTMUCH_SORT_OLDEST_FIRST,
first=<value optimized out>, max_threads=<value optimized out>)
at notmuch-search.c:40
thread = <value optimized out>
threads = 0x1551290
tags = 0x2
date = <value optimized out>
relative_date = 0x2 <Address 0x2 out of bounds>
\#6 0x0000000000408ddd in notmuch_search_command (ctx=<value optimized out>,
argc=1, argv=<value optimized out>) at notmuch-search.c:156
config = <value optimized out>
query = 0x158b510
query_str = <value optimized out>
i = 1
first = <value optimized out>
max_threads = <value optimized out>
opt = <value optimized out>
end = 0x0
sort = <value optimized out>
\#7 0x000000000040636f in main (argc=4, argv=0x7fff2cadec98) at notmuch.c:400
local = 0x1543140
command = <value optimized out>
--
Jeff Ollie
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-18 18:00 Segfault searching for tags Jeffrey Ollie
@ 2009-11-19 15:45 ` Adrian Perez de Castro
2009-11-20 2:23 ` Jeffrey Ollie
0 siblings, 1 reply; 9+ messages in thread
From: Adrian Perez de Castro @ 2009-11-19 15:45 UTC (permalink / raw)
To: notmuch
[-- Attachment #1: Type: text/plain, Size: 3328 bytes --]
On Wed, 18 Nov 2009 12:00:10 -0600, Jeffrey wrote:
> Getting the following segfault with 306635c2 on Fedora 12. Seems to
> be happening with any 'tag:' search that returns results. For
> example, 'notmuch search tag:inbox' and 'notmuch search tag:unread'
> segfault but 'notmuch search tag:nosuchtag', 'notmuch search
> subject:logwatch' and 'notmuch search video' seem to work fine.
>
> Core was generated by `/usr/bin/notmuch search --sort=oldest-first tag:inbox'.
> Program terminated with signal 11, Segmentation fault.
> \#0 Xapian::TermIterator::operator* (this=<value optimized out>)
> at api/omtermlistiterator.cc:78
> 78 RETURN(internal->get_termname());
> Current language: auto
> The current source language is "auto; currently c++".
I have hit what I believe is exactly the same problem. In my case, some
results are printed when I execute "notmuch search tag:inbox", and then
the program crashes in the same exact place.
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:
Program received signal SIGSEGV, Segmentation fault.
Xapian::TermIterator::operator* (this=<value optimized out>) at api/omtermlistiterator.cc:78
78 RETURN(internal->get_termname()); Current language: auto
The current source language is "auto; currently c++".
(gdb) bt
#0 Xapian::TermIterator::operator* (this=<value optimized out>) at api/omtermlistiterator.cc:78
#1 0x000000000040f611 in _notmuch_message_get_in_reply_to(message=0x76dcd0) at lib/message.cc:288
#2 0x0000000000412030 in _resolve_thread_relationships (thread=0x6a8b80) at lib/thread.cc:157
#3 0x0000000000412454 in _notmuch_thread_create (ctx=0x65f1b0, notmuch=0x62d320, thread_id= 0x765530 "01b17ddb4479a0dc0b416bb63b92c43d", query_string=0x65f220 "tag:inbox") at lib/thread.cc:285
#4 0x0000000000411982 in notmuch_query_search_threads (query=0x65f1b0, first=100, max_threads=-1) at lib/query.cc:218
#5 0x000000000040924d in do_search_threads (ctx=0x61f140, query=0x65f1b0, sort=NOTMUCH_SORT_NEWEST_FIRST, first=100, max_threads=-1) at notmuch-search.c:40
#6 0x00000000004097ef in notmuch_search_command (ctx=0x61f140, argc=1, argv=0x7fffffffe188) at notmuch-search.c:164
#7 0x00000000004066f1 in main (argc=3, argv=0x7fffffffe178) at notmuch.c:400
(gdb) frame 1
#1 0x000000000040f611 in _notmuch_message_get_in_reply_to (message=0x76dcd0) at lib/message.cc:288
288 in_reply_to = *i;
(gdb) p *message
$1 = {notmuch = 0x62d320, doc_id = 1, frozen = 0, message_id = 0x76db60 "", thread_id = 0x0,
in_reply_to = 0x0, filename = 0x76dc50 "/home/aperez/.mail/inbox/.claws_cache", message_file = 0x0,
replies = 0x76d250, doc = {internal = {dest = 0x76d450}}}
As you can see, there "filename" points to a Claws-Mail cache file, which
is a binary file (I can provide a copy if needed). I suspect that this is
related to the fact that the iterator ends up being NULL somehow.
I will experiment a bit more with this issue -- maybe just avoiding adding
files whose name starts with a dot will suffice as temporary fix.
Cheers,
--
Adrian Perez de Castro <aperez@igalia.com>
Igalia - Free Software Engineering
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-19 15:45 ` Adrian Perez de Castro
@ 2009-11-20 2:23 ` Jeffrey Ollie
2009-11-20 11:32 ` Carl Worth
0 siblings, 1 reply; 9+ messages in thread
From: Jeffrey Ollie @ 2009-11-20 2:23 UTC (permalink / raw)
To: Not Much Mail
[-- Attachment #1: Type: text/plain, Size: 1974 bytes --]
On Thu, Nov 19, 2009 at 9:45 AM, Adrian Perez de Castro
<aperez@igalia.com> wrote:
> On Wed, 18 Nov 2009 12:00:10 -0600, Jeffrey wrote:
>
>> Getting the following segfault with 306635c2 on Fedora 12. Seems to
>> be happening with any 'tag:' search that returns results. For
>> example, 'notmuch search tag:inbox' and 'notmuch search tag:unread'
>> segfault but 'notmuch search tag:nosuchtag', 'notmuch search
>> subject:logwatch' and 'notmuch search video' seem to work fine.
>>
>> Core was generated by `/usr/bin/notmuch search --sort=oldest-first tag:inbox'.
>> Program terminated with signal 11, Segmentation fault.
>> \#0 Xapian::TermIterator::operator* (this=<value optimized out>)
>> at api/omtermlistiterator.cc:78
>> 78 RETURN(internal->get_termname());
>> Current language: auto
>> The current source language is "auto; currently c++".
>
> I have hit what I believe is exactly the same problem. In my case, some
> results are printed when I execute "notmuch search tag:inbox", and then
> the program crashes in the same exact place.
>
> 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:
> [...]
> As you can see, there "filename" points to a Claws-Mail cache file, which
> is a binary file (I can provide a copy if needed). I suspect that this is
> related to the fact that the iterator ends up being NULL somehow.
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.
--
Jeff Ollie
[-- Attachment #2: message.txt --]
[-- Type: text/plain, Size: 980 bytes --]
Delivered-To: jeff@ollie.clive.ia.us
Received: by 10.90.86.18 with SMTP id j18cs228556agb;
Thu, 5 Nov 2009 22:23:50 -0800 (PST)
Received: by 10.90.16.38 with SMTP id 38mr7468290agp.112.1257488620374;
Thu, 05 Nov 2009 22:23:40 -0800 (PST)
Return-Path: <xhutteesjj@yahoo.com.au>
Received: from 209.85.223.101 ([116.208.64.100])
by mx.google.com with SMTP id 41si9046203iwn.112.2009.11.05.22.23.38;
Thu, 05 Nov 2009 22:23:40 -0800 (PST)
Received-SPF: neutral (google.com: 116.208.64.100 is neither permitted nor denied by best guess record for domain of xhutteesjj@yahoo.com.au) client-ip=116.208.64.100;
Authentication-Results: mx.google.com; spf=neutral (google.com: 116.208.64.100 is neither permitted nor denied by best guess record for domain of xhutteesjj@yahoo.com.au) smtp.mail=xhutteesjj@yahoo.com.au
Date: Thu, 05 Nov 2009 22:23:40 -0800 (PST)
Received: from 146.2.76.118 by 116.208.64.100; Fri, 06 Nov 2009 03:20:42 -0300
Message-ID: <C[20
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-20 2:23 ` Jeffrey Ollie
@ 2009-11-20 11:32 ` Carl Worth
2009-11-20 13:10 ` Jeffrey Ollie
2009-11-20 19:03 ` Adrian Perez de Castro
0 siblings, 2 replies; 9+ messages in thread
From: Carl Worth @ 2009-11-20 11:32 UTC (permalink / raw)
To: Adrian Perez de Castro, notmuch, Jeffrey Ollie, Not Much Mail
On Thu, 19 Nov 2009 16:45:43 +0100, Adrian Perez de Castro <aperez@igalia.com> 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 ().
On Thu, 19 Nov 2009 20:23:15 -0600, Jeffrey Ollie <jeff@ocjtech.us> 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.
-Carl
commit 31b54bc78735c628035a046e526ac4c596d830cf
Author: Carl Worth <cworth@cworth.org>
Date: Fri Nov 20 12:06:11 2009 +0100
Avoid access of a Xapian iterator's object when there's nothing
there.
This eliminates a crash when a message (either corrupted or a
non-mail
file that wasn't properly detected as not being mail) has no
In-Reply-To
header, (and so few terms that trying to skip to the prefix of the
In-Reply-To terms actually brings us to the end of the termlist).
diff --git a/lib/message.cc b/lib/message.cc
index 9488fb6..41dddd0 100644
--- a/lib/message.cc
+++ b/lib/message.cc
@@ -285,7 +285,8 @@ _notmuch_message_get_in_reply_to (notmuch_message_t
*message
i = message->doc.termlist_begin ();
i.skip_to (prefix);
- in_reply_to = *i;
+ if (i != message->doc.termlist_end ())
+ in_reply_to = *i;
/* It's perfectly valid for a message to have no In-Reply-To
* header. For these cases, we return an empty string. */
@@ -332,10 +333,10 @@ notmuch_message_get_thread_id (notmuch_message_t
*message)
return message->thread_id;
i = message->doc.termlist_begin ();
-
i.skip_to (prefix);
- id = *i;
+ if (i != message->doc.termlist_end ())
+ id = *i;
if (i == message->doc.termlist_end () || id[0] != *prefix)
INTERNAL_ERROR ("Message with document ID of %d has no thread
ID.\n",
@@ -466,7 +467,7 @@ notmuch_message_get_tags (notmuch_message_t
*message)
i.skip_to (prefix);
- while (1) {
+ while (i != end) {
tag = *i;
if (tag.empty () || tag[0] != *prefix)
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-20 11:32 ` Carl Worth
@ 2009-11-20 13:10 ` Jeffrey Ollie
2009-11-20 13:20 ` Jan Janak
2009-11-20 19:03 ` Adrian Perez de Castro
1 sibling, 1 reply; 9+ messages in thread
From: Jeffrey Ollie @ 2009-11-20 13:10 UTC (permalink / raw)
To: Carl Worth; +Cc: Not Much Mail
On Fri, Nov 20, 2009 at 5:32 AM, Carl Worth <cworth@cworth.org> wrote:
> On Thu, 19 Nov 2009 16:45:43 +0100, Adrian Perez de Castro <aperez@igalia.com> 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 ().
>
> On Thu, 19 Nov 2009 20:23:15 -0600, Jeffrey Ollie <jeff@ocjtech.us> 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.
>
> 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.
Ah, excellent! This does indeed seem to prevent the crash. Now I
just need to figure out how to get all my mail out of GMail.
--
Jeff Ollie
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-20 13:10 ` Jeffrey Ollie
@ 2009-11-20 13:20 ` Jan Janak
2009-11-20 17:02 ` Carl Worth
0 siblings, 1 reply; 9+ messages in thread
From: Jan Janak @ 2009-11-20 13:20 UTC (permalink / raw)
To: Jeffrey Ollie; +Cc: Not Much Mail
On Fri, Nov 20, 2009 at 2:10 PM, Jeffrey Ollie <jeff@ocjtech.us> wrote:
> On Fri, Nov 20, 2009 at 5:32 AM, Carl Worth <cworth@cworth.org> wrote:
>> On Thu, 19 Nov 2009 16:45:43 +0100, Adrian Perez de Castro <aperez@igalia.com> 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 ().
>>
>> On Thu, 19 Nov 2009 20:23:15 -0600, Jeffrey Ollie <jeff@ocjtech.us> 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.
>>
>> 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.
>
> Ah, excellent! This does indeed seem to prevent the crash. Now I
> just need to figure out how to get all my mail out of GMail.
I did exactly that with offlineimap. It crashes from time to time, but
then you can just restart it and continue.
A few days ago I sent a patch which converts mail subdirectories to
tags and because Gmail IMAP server converts labels to subdirectories,
you can use that to convert gmail's labels to notmuch tags
automatically.
-- Jan
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-20 13:20 ` Jan Janak
@ 2009-11-20 17:02 ` Carl Worth
0 siblings, 0 replies; 9+ messages in thread
From: Carl Worth @ 2009-11-20 17:02 UTC (permalink / raw)
To: Jan Janak, Jeffrey Ollie; +Cc: Not Much Mail
On Fri, 20 Nov 2009 14:20:45 +0100, Jan Janak <jan@ryngle.com> wrote:
> > Ah, excellent! This does indeed seem to prevent the crash. Now I
> > just need to figure out how to get all my mail out of GMail.
>
> I did exactly that with offlineimap. It crashes from time to time, but
> then you can just restart it and continue.
It sounds like a lot of people are wanting to do that. So it probably
wouldn't hurt for someone who's done it to write up instructions for
that, (or post a link to existing instructions).
I'd say that it might make sense to put these up in a wiki, (and I'll
probably eventually setup an ikiwiki instance for notmuchmail.org just
like I do for cworth.org and cairographics.org). But then again, we're
*already* using email, and I've got this half-baked idea about being
able to just tag useful posts and have them appear on the webpage.
> A few days ago I sent a patch which converts mail subdirectories to
> tags and because Gmail IMAP server converts labels to subdirectories,
> you can use that to convert gmail's labels to notmuch tags
> automatically.
I haven't lost that. Sorry it's taking me a bit to get to it, though!
I think there were two different patches from two people for this
feature. So I've got those both tagged and will review them soon.
-Carl
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-20 11:32 ` Carl Worth
2009-11-20 13:10 ` Jeffrey Ollie
@ 2009-11-20 19:03 ` Adrian Perez de Castro
2009-11-21 0:32 ` Carl Worth
1 sibling, 1 reply; 9+ messages in thread
From: Adrian Perez de Castro @ 2009-11-20 19:03 UTC (permalink / raw)
To: notmuch
[-- Attachment #1: Type: text/plain, Size: 1946 bytes --]
On Fri, 20 Nov 2009 12:32:41 +0100, Carl wrote:
> On Thu, 19 Nov 2009 16:45:43 +0100, Adrian Perez de Castro <aperez@igalia.com> 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 <jeff@ocjtech.us> 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 <aperez@igalia.com>
Igalia - Free Software Engineering
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Segfault searching for tags
2009-11-20 19:03 ` Adrian Perez de Castro
@ 2009-11-21 0:32 ` Carl Worth
0 siblings, 0 replies; 9+ messages in thread
From: Carl Worth @ 2009-11-21 0:32 UTC (permalink / raw)
To: Adrian Perez de Castro, notmuch
On Fri, 20 Nov 2009 20:03:00 +0100, Adrian Perez de Castro <aperez@igalia.com> wrote:
> 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 :)
I'm glad you agree.
Though I should mention that I earned my summer's salary during an
internship once by solving a performance problem that had dodged the
engineers on the project, (since they overlooked an overloaded array
subscript operator on a std::string class as something that could be
expensive---profiling made it obvious, and a temporary copy to a real
array with a real subscript fixed the bug).
So I can't say that operator overloading never helped me. But I know I
left that internship determined not to use it myself.
> I can confirm that this patch avoids the segfault in my case, too. Thanks
> a lot for the quick fix.
Excellent. I'm glad to hear it worked for you.
I'm sorry that the bug was there, since this was a regression that's
come back once or twice now. The project is overdue for a test suite
already...
-Carl
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-11-21 0:32 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-18 18:00 Segfault searching for tags Jeffrey Ollie
2009-11-19 15:45 ` Adrian Perez de Castro
2009-11-20 2:23 ` Jeffrey Ollie
2009-11-20 11:32 ` Carl Worth
2009-11-20 13:10 ` Jeffrey Ollie
2009-11-20 13:20 ` Jan Janak
2009-11-20 17:02 ` Carl Worth
2009-11-20 19:03 ` Adrian Perez de Castro
2009-11-21 0:32 ` Carl Worth
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).