Xapian lockup when writing to the notmuch database
authorGuyzmo <guyzmo+notmuch@m0g.net>
Wed, 6 Jan 2016 15:35:43 +0000 (15:35 +0000)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:50:22 +0000 (14:50 -0700)
33/f1c2f1c340fc85c18bc77de20d350f8c8001ef [new file with mode: 0644]

diff --git a/33/f1c2f1c340fc85c18bc77de20d350f8c8001ef b/33/f1c2f1c340fc85c18bc77de20d350f8c8001ef
new file mode 100644 (file)
index 0000000..d09618d
--- /dev/null
@@ -0,0 +1,191 @@
+Return-Path: <guyzmo+notmuch@m0g.net>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by arlo.cworth.org (Postfix) with ESMTP id D30846DE10F8\r
+ for <notmuch@notmuchmail.org>; Wed,  6 Jan 2016 07:41:30 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.652\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.652 tagged_above=-999 required=5\r
+ tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\r
+ RP_MATCHES_RCVD=-0.55, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001]\r
+ autolearn=disabled\r
+Received: from arlo.cworth.org ([127.0.0.1])\r
+ by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id irhWR65Y7RhG for <notmuch@notmuchmail.org>;\r
+ Wed,  6 Jan 2016 07:41:28 -0800 (PST)\r
+X-Greylist: delayed 340 seconds by postgrey-1.35 at arlo;\r
+ Wed, 06 Jan 2016 07:41:27 PST\r
+Received: from elendil.m0g.net (elendil.m0g.net [212.83.155.195])\r
+ by arlo.cworth.org (Postfix) with ESMTPS id 97BBC6DE103A\r
+ for <notmuch@notmuchmail.org>; Wed,  6 Jan 2016 07:41:27 -0800 (PST)\r
+Received: from authenticated-user (elendil.m0g.net [212.83.155.195])\r
+ (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))\r
+ (No client certificate requested)\r
+ by elendil.m0g.net (Postfix) with ESMTPSA id 0C6D82A096B\r
+ for <notmuch@notmuchmail.org>; Wed,  6 Jan 2016 16:35:43 +0100 (CET)\r
+DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=m0g.net; s=mail;\r
+ t=1452094544; bh=hQjmQxPSz+u23SSXrZFWUFClEE7MoEYqvPJEs1DlCFE=;\r
+ h=From:Subject:Date:To:From;\r
+ b=iv0Wk9DttI+aAoPMukck+xeTNYONKy77azibelYW5VBt8fAD0oRMfDlWwCXpsbgfU\r
+ pc8SyFJ50DbquNmreiXgK3IwuRW+Wc79V7uPf/B3rP/qoTNAwV3nIfE533NlL+4Bo5\r
+ 7ldetkRr9W88SHwPnVO+GzJPHtcxhO9TIqKvAx8/J6M/5FTgqAzS8nYlW4cVKsLjdH\r
+ LU/6L0PMIQ0KK7hsUimrYLHpOprZ4s2zPwpucl9ZTiOnhUetfyedoY+WwD3JNhCMff\r
+ rj10pVfr7MNGIRJS1xcvFOQtJmpZOh6IokG3H0aLKghfRnk41x3hpqtbF5eUKY6d2V\r
+ J5O8/Sly3MVRg==\r
+From: Guyzmo <guyzmo+notmuch@m0g.net>\r
+Content-Type: text/plain; charset=utf-8\r
+Content-Transfer-Encoding: quoted-printable\r
+Subject: Xapian lockup when writing to the notmuch database\r
+Message-Id: <E3479D8D-28C6-4C36-9F83-081A6E548D4D@m0g.net>\r
+Date: Wed, 6 Jan 2016 15:35:43 +0000\r
+To: notmuch@notmuchmail.org\r
+Mime-Version: 1.0\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.20\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <https://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: <https://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Wed, 06 Jan 2016 15:41:31 -0000\r
+\r
+Hello,\r
+\r
+I have migrated my mail configuration from an old machine to a new one, =\r
+which is a xen=20\r
+server with several VM instances. I have one VM dedicated to do mail =\r
+stuff, and I want\r
+to manage my Maildir using notmuch in another one. So I set up an NFSv4 =\r
+share (with\r
+sync option set) from the mail server, to have my Maildir accessible =\r
+from the other VM.=20\r
+Of course, I made sure my user is able to have full privileges over the =\r
+mounted share,\r
+and there=E2=80=99s only one instance of notmuch running over that =\r
+xapian db at all times.\r
+\r
+All read only operations work just perfectly fine, I can even run =\r
+notmuch-kz and have\r
+it list my search mailboxes.\r
+\r
+But when I do `notmuch new` it hangs. So I did ran it through gdb and =\r
+here is the result:\r
+\r
+% gdb notmuch\r
+(gdb) run new\r
+Starting program: /usr/local/bin/notmuch new\r
+[Thread debugging using libthread_db enabled]\r
+Using host libthread_db library =\r
+"/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1".\r
+^C\r
+Program received signal SIGINT, Interrupt.\r
+0xb7fe1428 in __kernel_vsyscall ()\r
+(gdb) bt\r
+#0  0xb7fe1428 in __kernel_vsyscall ()\r
+#1  0xb7d2a953 in read () from /lib/i386-linux-gnu/i686/cmov/libc.so.6\r
+#2  0xb7adf538 in read (__nbytes=3D1, __buf=3D0xbfffedfc, =\r
+__fd=3D<optimized out>) at /usr/include/i386-linux-gnu/bits/unistd.h:45\r
+#3  FlintLock::lock (this=3D0x8079180, exclusive=3Dtrue, =\r
+explanation=3D...) at ../backends/flint_lock.cc:222\r
+#4  0xb7b30a86 in ChertDatabase::get_database_write_lock =\r
+(this=3Dthis@entry=3D0x80789a0, creating=3Dcreating@entry=3Dfalse)\r
+    at ../backends/chert/chert_database.cc:505\r
+#5  0xb7b34fd2 in ChertDatabase::ChertDatabase =\r
+(this=3Dthis@entry=3D0x80789a0, chert_dir=3D..., action=3Daction@entry=3D1=\r
+, block_size=3Dblock_size@entry=3D8192)\r
+    at ../backends/chert/chert_database.cc:154\r
+#6  0xb7b35554 in ChertWritableDatabase::ChertWritableDatabase =\r
+(this=3D0x80789a0, dir=3D..., action=3D1, block_size=3D8192)\r
+    at ../backends/chert/chert_database.cc:1036\r
+#7  0xb7adcee4 in Xapian::WritableDatabase::WritableDatabase =\r
+(this=3D0x80780c8, path=3D..., action=3D1) at =\r
+../backends/dbfactory.cc:490\r
+#8  0xb7fb8c68 in notmuch_database_open_verbose (path=3D0x80780c8 =\r
+"\340\327=C5=B7", mode=3DNOTMUCH_DATABASE_MODE_READ_WRITE, =\r
+database=3D0xbffff230,=20\r
+    status_string=3D0xbffff248) at lib/database.cc:933\r
+#9  0x08054e93 in notmuch_new_command (config=3D0x80745b8, argc=3D1, =\r
+argv=3D0xbffff678) at notmuch-new.c:1008\r
+#10 0x0804df87 in main (argc=3D2, argv=3D0xbffff674) at notmuch.c:421\r
+(gdb)=20\r
+\r
+then I tried doing another write operation, doing a `notmuch tag` =\r
+command\r
+\r
+% gdb notmuch\r
+(gdb) run tag +tag id:<a_unique_mail_id>\r
+(gdb) bt\r
+#0  0xb7fe1428 in __kernel_vsyscall ()\r
+#1  0xb7d2a953 in read () from /lib/i386-linux-gnu/i686/cmov/libc.so.6\r
+#2  0xb7adf538 in read (__nbytes=3D1, __buf=3D0xbfffefac, =\r
+__fd=3D<optimized out>) at /usr/include/i386-linux-gnu/bits/unistd.h:45\r
+#3  FlintLock::lock (this=3D0x8079360, exclusive=3Dtrue, =\r
+explanation=3D...) at ../backends/flint_lock.cc:222\r
+#4  0xb7b30a86 in ChertDatabase::get_database_write_lock =\r
+(this=3Dthis@entry=3D0x8078b80, creating=3Dcreating@entry=3Dfalse)\r
+    at ../backends/chert/chert_database.cc:505\r
+#5  0xb7b34fd2 in ChertDatabase::ChertDatabase =\r
+(this=3Dthis@entry=3D0x8078b80, chert_dir=3D..., action=3Daction@entry=3D1=\r
+, block_size=3Dblock_size@entry=3D8192)\r
+    at ../backends/chert/chert_database.cc:154\r
+#6  0xb7b35554 in ChertWritableDatabase::ChertWritableDatabase =\r
+(this=3D0x8078b80, dir=3D..., action=3D1, block_size=3D8192)\r
+    at ../backends/chert/chert_database.cc:1036\r
+#7  0xb7adcee4 in Xapian::WritableDatabase::WritableDatabase =\r
+(this=3D0x80780c8, path=3D..., action=3D1) at =\r
+../backends/dbfactory.cc:490\r
+#8  0xb7fb8c68 in notmuch_database_open_verbose (path=3D0x80780c8 =\r
+"\340\327=C5=B7", mode=3DNOTMUCH_DATABASE_MODE_READ_WRITE, =\r
+database=3D0xbffff3e4,=20\r
+    status_string=3D0xbffff39c) at lib/database.cc:933\r
+#9  0xb7fb975c in notmuch_database_open (path=3D0x8078068 =\r
+"/home/guyzmo/Maildir", =\r
+mode=3Dmode@entry=3DNOTMUCH_DATABASE_MODE_READ_WRITE,=20\r
+    database=3Ddatabase@entry=3D0xbffff3e4) at lib/database.cc:848\r
+#10 0x0805cbe4 in notmuch_tag_command (config=3D0x80745b8, argc=3D3, =\r
+argv=3D0xbffff638) at notmuch-tag.c:262\r
+#11 0x0804df87 in main (argc=3D4, argv=3D0xbffff634) at notmuch.c:421\r
+(gdb)=20\r
+\r
+I=E2=80=99m running notmuch on a Debian Jessie (v7), on which I compiled =\r
+latest notmuch\r
+from git, using the repository=E2=80=99s libxapian which is v1.2.12-2.\r
+\r
+Now, I could use a newer version of libxapian, either V1.2.19 from the =\r
+debian=20\r
+backports (https://packages.debian.org/jessie/libxapian22), or get the =\r
+latest\r
+compiling it from sources, as it looks like the flintlock.cc compilation =\r
+unit\r
+has been rewritten since v1.2.12 =E2=80=94 though it looks like the part =\r
+where it hangs\r
+is looking quite alike, but it=E2=80=99s hard to tell from the changes =\r
+whether that=20\r
+would have an inpact.\r
+\r
+So my question is whether this is a known issue, and is actually related =\r
+to\r
+the fact that I=E2=80=99m running it over NFS. I looked for NFS related =\r
+comments on\r
+xapian website and so far I found nothing looking alike my issue.\r
+\r
+I=E2=80=99ll try testing with other versions of xapian and see it solves =\r
+it. If the\r
+issue is still on with HEAD of xapian=E2=80=99s sources, then I=E2=80=99ll=\r
+ do a bug report.\r
+Until then, I=E2=80=99m just checking on this list for ideas and =\r
+comments, in hope\r
+for a working solution.\r
+\r
+Cheers,\r
+\r
+--=20\r
+Guyzmo=\r