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