Issues with user.sub files - subscription files hangs system.
Bron Gondwana
brong at fastmail.fm
Wed Oct 1 09:00:28 EDT 2008
On Wed, Oct 01, 2008 at 02:07:23AM -0700, Adam D wrote:
> Simon Matter wrote:
> >> [snip]
> >> Has anyone else had this same issue and have been able to fix it? I
> >> really do not know why when deleting the username.sub.NEW file it is
> >> recreated and when making changes to the subscriptions an imapd process
> >> is spawned and freezes.
> >>
> >
> > I didn't follow the thread but, did you reconstruct your mailspool? Things
> > like that are usually a filesystem full problem or some kind of corruption
> > in the mailspool.
> >
> > Simon
> >
> Yes, we ran reconstruct as cyrus user for all mailboxes. It did take a
> while but does reconstruct, reconstructs the sub and seen files? Would
> the corruption be in the mboxlist_db or in the subscription_db?
*sigh*
It looks a whole lot like this old cow rearing its ugly head again:
http://lkml.org/lkml/2008/6/17/9
Here's the interesting bit:
niov = 0;
if (offset) {
WRITEV_ADD_TO_IOVEC(iov, niov, (char *) db->base, offset);
}
if (data) {
/* new entry */
WRITEV_ADD_TO_IOVEC(iov, niov, (char *) key, keylen);
WRITEV_ADD_TO_IOVEC(iov, niov, "\t", 1);
WRITEV_ADD_TO_IOVEC(iov, niov, (char *) data, datalen);
WRITEV_ADD_TO_IOVEC(iov, niov, "\n", 1);
}
if (db->size - (offset + len) > 0) {
WRITEV_ADD_TO_IOVEC(iov, niov, (char *) db->base + offset + len,
db->size - (offset + len));
}
See that last one - it's being written from mmapped memory that's probably
not yet paged in. It will be replaced with a bunch of zeros.
Yay zeros.
Looks remarkably like the bug that I saw in the copies of the admin.sub
and admin.sub.NEW files that were emailed to me.
Fix: use a kernel since 2.6.25.7. 2.6.25.8 contains the patch:
x86-64: Fix "bytes left to copy" return value for copy_from_user()
from Linus which fixes the issue.
Bron ( it was also harder to trigger before 2.6.22, but still existed )
More information about the Info-cyrus
mailing list