Your message dated Tue, 11 Dec 2012 19:52:18 +0100 with message-id <50C780E2.1060505@thykier.net> and subject line Re: Bug#695649: unblock: xapian-core/1.2.12-2 has caused the Debian Bug report #695649, regarding unblock: xapian-core/1.2.12-2 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 695649: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695649 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock: xapian-core/1.2.12-2
- From: Olly Betts <olly@survex.com>
- Date: Tue, 11 Dec 2012 20:16:24 +1300
- Message-id: <[🔎] 20121211071624.GA12263@cavity>
Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: unblock Please unblock package xapian-core This update contains the following changes compared to the version currently in testing (1.2.12-1): Fixes grave bug http://bugs.debian.org/695542 ("Concurrent threads can succeed in locking database"). Fixes bug http://bugs.debian.org/695643 ("Database replication fails for files > 32GB") which is a small and safe patch relevant to the LFS release goal: http://wiki.debian.org/ReleaseGoals/LFS I've attached a debdiff against 1.2.12-1 (currently in testing), and for your reviewing convenience, the two new patches individually. Cheers, Olly unblock xapian-core/1.2.12-2 -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-4-amd64 (SMP w/8 CPU cores) Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dashdiff -Nru xapian-core-1.2.12/debian/changelog xapian-core-1.2.12/debian/changelog --- xapian-core-1.2.12/debian/changelog 2012-06-28 19:54:11.000000000 +1200 +++ xapian-core-1.2.12/debian/changelog 2012-12-11 17:22:23.000000000 +1300 @@ -1,3 +1,13 @@ +xapian-core (1.2.12-2) unstable; urgency=low + + * New patch fix-db-write-lock.patch which fixes database write locking to + work when the lock file is already open in the same process. + (Closes: #695542) + * New patch replication-above-32GB.patch which fixes database replication to + handle files > 32GB. (Closes: #695643) + + -- Olly Betts <olly@survex.com> Tue, 11 Dec 2012 04:22:04 +0000 + xapian-core (1.2.12-1) unstable; urgency=low * New upstream release. diff -Nru xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch --- xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch 1970-01-01 12:00:00.000000000 +1200 +++ xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch 2012-12-11 17:25:07.000000000 +1300 @@ -0,0 +1,62 @@ +Taken from 1.2 branch of upstream SVN r16938. + +--- a/backends/flint_lock.cc (revision 16937) ++++ b/backends/flint_lock.cc (revision 16938) +@@ -2,5 +2,5 @@ + * @brief Flint-compatible database locking. + */ +-/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011 Olly Betts ++/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011,2012 Olly Betts + * + * This program is free software; you can redistribute it and/or +@@ -134,4 +134,20 @@ + close(fds[0]); + ++ // Connect pipe to stdin and stdout. ++ dup2(fds[1], 0); ++ dup2(fds[1], 1); ++ ++ // Make sure we don't hang on to open files which may get deleted but ++ // not have their disk space released until we exit. Close these ++ // before we try to get the lock because if one of them is open on ++ // the lock file then closing it after obtaining the lock would release ++ // the lock, which would be really bad. ++ for (int i = 2; i < lockfd; ++i) { ++ // Retry on EINTR; just ignore other errors (we'll get ++ // EBADF if the fd isn't open so that's OK). ++ while (close(i) < 0 && errno == EINTR) { } ++ } ++ closefrom(lockfd + 1); ++ + reason why = SUCCESS; + { +@@ -160,5 +176,5 @@ + // Tell the parent if we got the lock, and if not, why not. + char ch = static_cast<char>(why); +- while (write(fds[1], &ch, 1) < 0) { ++ while (write(1, &ch, 1) < 0) { + // EINTR means a signal interrupted us, so retry. + // Otherwise we're DOOMED! The best we can do is just exit +@@ -169,8 +185,4 @@ + if (why != SUCCESS) _exit(0); + } +- +- // Connect pipe to stdin and stdout. +- dup2(fds[1], 0); +- dup2(fds[1], 1); + + // Make sure we don't block unmount() of partition holding the current +@@ -184,13 +196,4 @@ + // gives a warning even if we cast the result to void. + } +- +- // Make sure we don't hang on to open files which may get deleted but +- // not have their disk space released until we exit. +- for (int i = 2; i < lockfd; ++i) { +- // Retry on EINTR; just ignore other errors (we'll get +- // EBADF if the fd isn't open so that's OK). +- while (close(i) < 0 && errno == EINTR) { } +- } +- closefrom(lockfd + 1); + + // FIXME: use special statically linked helper instead of cat. diff -Nru xapian-core-1.2.12/debian/patches/replication-above-32GB.patch xapian-core-1.2.12/debian/patches/replication-above-32GB.patch --- xapian-core-1.2.12/debian/patches/replication-above-32GB.patch 1970-01-01 12:00:00.000000000 +1200 +++ xapian-core-1.2.12/debian/patches/replication-above-32GB.patch 2012-12-11 17:25:13.000000000 +1300 @@ -0,0 +1,13 @@ +Taken from 1.2 branch of upstream SVN r16915. + +--- a/net/remoteconnection.cc (revision 16348) ++++ b/net/remoteconnection.cc (revision 16915) +@@ -618,5 +618,7 @@ + int shift = 0; + do { +- if (i == buffer.end() || shift > 28) { ++ // Allow a full 64 bits for message lengths - anything longer than that ++ // is almost certainly a corrupt value. ++ if (i == buffer.end() || shift > 63) { + // Something is very wrong... + throw Xapian::NetworkError("Insane message length specified!"); diff -Nru xapian-core-1.2.12/debian/patches/series xapian-core-1.2.12/debian/patches/series --- xapian-core-1.2.12/debian/patches/series 1970-01-01 12:00:00.000000000 +1200 +++ xapian-core-1.2.12/debian/patches/series 2012-12-11 17:22:00.000000000 +1300 @@ -0,0 +1,2 @@ +fix-db-write-lock.patch +replication-above-32GB.patchTaken from 1.2 branch of upstream SVN r16938. --- a/backends/flint_lock.cc (revision 16937) +++ b/backends/flint_lock.cc (revision 16938) @@ -2,5 +2,5 @@ * @brief Flint-compatible database locking. */ -/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011 Olly Betts +/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011,2012 Olly Betts * * This program is free software; you can redistribute it and/or @@ -134,4 +134,20 @@ close(fds[0]); + // Connect pipe to stdin and stdout. + dup2(fds[1], 0); + dup2(fds[1], 1); + + // Make sure we don't hang on to open files which may get deleted but + // not have their disk space released until we exit. Close these + // before we try to get the lock because if one of them is open on + // the lock file then closing it after obtaining the lock would release + // the lock, which would be really bad. + for (int i = 2; i < lockfd; ++i) { + // Retry on EINTR; just ignore other errors (we'll get + // EBADF if the fd isn't open so that's OK). + while (close(i) < 0 && errno == EINTR) { } + } + closefrom(lockfd + 1); + reason why = SUCCESS; { @@ -160,5 +176,5 @@ // Tell the parent if we got the lock, and if not, why not. char ch = static_cast<char>(why); - while (write(fds[1], &ch, 1) < 0) { + while (write(1, &ch, 1) < 0) { // EINTR means a signal interrupted us, so retry. // Otherwise we're DOOMED! The best we can do is just exit @@ -169,8 +185,4 @@ if (why != SUCCESS) _exit(0); } - - // Connect pipe to stdin and stdout. - dup2(fds[1], 0); - dup2(fds[1], 1); // Make sure we don't block unmount() of partition holding the current @@ -184,13 +196,4 @@ // gives a warning even if we cast the result to void. } - - // Make sure we don't hang on to open files which may get deleted but - // not have their disk space released until we exit. - for (int i = 2; i < lockfd; ++i) { - // Retry on EINTR; just ignore other errors (we'll get - // EBADF if the fd isn't open so that's OK). - while (close(i) < 0 && errno == EINTR) { } - } - closefrom(lockfd + 1); // FIXME: use special statically linked helper instead of cat.Taken from 1.2 branch of upstream SVN r16915. --- a/net/remoteconnection.cc (revision 16348) +++ b/net/remoteconnection.cc (revision 16915) @@ -618,5 +618,7 @@ int shift = 0; do { - if (i == buffer.end() || shift > 28) { + // Allow a full 64 bits for message lengths - anything longer than that + // is almost certainly a corrupt value. + if (i == buffer.end() || shift > 63) { // Something is very wrong... throw Xapian::NetworkError("Insane message length specified!");Attachment: signature.asc
Description: Digital signature
--- End Message ---
--- Begin Message ---
- To: Olly Betts <olly@survex.com>, 695649-done@bugs.debian.org
- Subject: Re: Bug#695649: unblock: xapian-core/1.2.12-2
- From: Niels Thykier <niels@thykier.net>
- Date: Tue, 11 Dec 2012 19:52:18 +0100
- Message-id: <50C780E2.1060505@thykier.net>
- In-reply-to: <[🔎] 20121211071624.GA12263@cavity>
- References: <[🔎] 20121211071624.GA12263@cavity>
On 2012-12-11 08:16, Olly Betts wrote: > Package: release.debian.org > Severity: normal > User: release.debian.org@packages.debian.org > Usertags: unblock > > Please unblock package xapian-core > > This update contains the following changes compared to the version > currently in testing (1.2.12-1): > > Fixes grave bug http://bugs.debian.org/695542 ("Concurrent threads can > succeed in locking database"). > > Fixes bug http://bugs.debian.org/695643 ("Database replication fails for > files > 32GB") which is a small and safe patch relevant to the LFS release > goal: http://wiki.debian.org/ReleaseGoals/LFS > > I've attached a debdiff against 1.2.12-1 (currently in testing), and > for your reviewing convenience, the two new patches individually. > > Cheers, > Olly > > unblock xapian-core/1.2.12-2 > > [...] Unblocked, thanks. ~Niels
--- End Message ---