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

diff --git a/10/c04e841f8a9b0291dbd00847981ccba3873cfe b/10/c04e841f8a9b0291dbd00847981ccba3873cfe
new file mode 100644 (file)
index 0000000..1566bbb
--- /dev/null
@@ -0,0 +1,186 @@
+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 5C6E46DE10F8\r
+ for <notmuch@notmuchmail.org>; Wed,  6 Jan 2016 07:49:49 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.315\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.315 tagged_above=-999 required=5 tests=[AWL=0.337,\r
+  DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RP_MATCHES_RCVD=-0.55,\r
+ SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 t2DqjJfSpLEN for <notmuch@notmuchmail.org>;\r
+ Wed,  6 Jan 2016 07:49:47 -0800 (PST)\r
+Received: from elendil.m0g.net (elendil.m0g.net [212.83.155.195])\r
+ by arlo.cworth.org (Postfix) with ESMTPS id 642BF6DE103A\r
+ for <notmuch@notmuchmail.org>; Wed,  6 Jan 2016 07:49:47 -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 EA1552A0C5A\r
+ for <notmuch@notmuchmail.org>; Wed,  6 Jan 2016 16:49:45 +0100 (CET)\r
+DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=m0g.net; s=mail;\r
+ t=1452095386; bh=luCc/k/ih3GmMNLCHbAHU0RqsP2PvvE2Z1GXzh685Ek=;\r
+ h=From:Subject:Date:To:From;\r
+ b=d52dhNmMm5PmWm6JxMV0b842v4/Ie9IeFdcKHkgvQ87iGoCqfmwe0SA+4iATpw0Yv\r
+ IqxpsDAiTW0NzOHwRdoQ/QyQ7V8QuS6WfLdzN+QTs5K5g0YZKiACpD+QX2zXAFkrf6\r
+ cf0zotXh2eallC9w0Sb9x6y8ip4Qt5YlMMFkq2SWdycnZb5SJIcgQdW0uj30mDuvHG\r
+ MqH4A6ud63LdI6IfASzkBcXuy6rrPTB3428JnS9FZDdGI+1F6v0PN0HXJRrFbakHak\r
+ dEzV64ePd/NK3wG9beKSciQG5ZVPQxhJa81BYVZZqQpD3cgP5kEgpwWHIDATxvbzX0\r
+ ZokF56CUa8maQ==\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: <67EEA3E1-918F-47AE-8AD7-EF0A5923D800@m0g.net>\r
+Date: Wed, 6 Jan 2016 15:49:28 +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:49:49 -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 Wheezy, 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.16 from the =\r
+debian=20\r
+wheezy backports, or get the latest compiling it from sources, as it =\r
+looks=20\r
+like the flintlock.cc compilation unit has been rewritten since v1.2.12\r
+=E2=80=94  though it looks like the part where it hangs is looking quite =\r
+alike, but=20\r
+it=E2=80=99s hard to tell from the changes whether that would have an =\r
+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