Problem moving between folders during 2.3.16 -> 2.5.9 upgrade

ellie timoney ellie at fastmail.com
Mon Jul 25 19:51:29 EDT 2016


On Mon, Jul 25, 2016, at 10:53 PM, Kenneth Marshall wrote:
> On Mon, Jul 25, 2016 at 03:53:43PM +1000, ellie timoney wrote:
> > I don't have a 2.3.x environment handy to try to reproduce this from the
> > outside in, so I'm starting at the error code and working outwards...
> > 
> > > > <1469384361<a0080 UID COPY 1162729 "Drafts"
> > > > >1469384362>a0080 NO Mailbox format corruption detected
> > 
> > "Mailbox format corruption detected" corresponds with
> > IMAP_MAILBOX_CHECKSUM
> > 
> > This error code is exclusively returned by functions in imap/mailbox.c,
> > for index/record crc mismatches.  Given that the mailbox is selectable
> > and such, I'm supposing that the whole-file/whole-record crc checks are
> > okay...
> > 
> > It looks like 2.3.16 had MAILBOX_MINOR_VERSION 10, and in particular
> > doesn't have the record->cache_crc field, which many of the
> > IMAP_MAILBOX_CHECKSUM checks are for.  When reading mailboxes < 12 in
> > newer Cyrus versions, this field is initialised to zero.
> > 
> > Some of the places that want to do a crc check against record->cache_crc
> > first make sure record->cache_crc is non-zero before doing so: 
> > cache_append_record(), mailbox_cacherecord().
> > 
> > But some don't, or at least don't appear to: mailbox_append_cache()
> > initially uses cache_append_record() (good), but then reads it straight
> > back in to ensure freshness -- and then having done so, appears to do an
> > unconditional check against record->cache_crc (dodgy?)
> > 
> > Actually that seems like all the spots this check happens -- so the fix
> > might be as simple as the attached patch?
> > 
> > Kenneth, are you able to try this out?
> > 
> > Cheers,
> > 
> > ellie
> > 
> 
> Hi Ellie,
> 
> That fixes the problem. Thank you so much for the quick response.
> 
> Regards,
> Ken

That's great to hear, thanks for trying it out.  This patch will be
included in 2.5.10 when it comes out.

Cheers,

ellie


More information about the Info-cyrus mailing list