reconstruct segfault, questions regarding databases

steffo76 at steffo76 at
Wed Nov 4 12:13:14 EST 2015

Hi there,
I'm trying to migrate cyrus to new servers which means the 32 bit machines will be replaced by 64 bit and 2.4.17 will be replaced by 2.5.6. Almost all databases should already be skiplist. To test the migration I restored the mailspool and made sure ownership is correct. Now if I run reconstruct -V max as the cyrus user, reconstruct crashes every couple of mailboxes leaving a log entry I don't understand, e.g.: 

reconstruct[21388]: WARNING: trying to rename cache file user.username.Folder (1 < 2)
reconstruct[21388]: IOERROR: failed to load cache for user.username.Folder
reconstruct[21388]: user.username.Folder: missing cache file, recreating
kernel: [174505.936323] reconstruct[21388]: segfault at 4 ip 00007ff81bddda58 sp 00007fff88baa060 error 4 in[7ff81bdb0000+6b000]

I don't see where that IOERROR could have come from, the cache file for the folder in question is there and accessible. On the next run of reconstruct this mailbox will be finished, but reconstruct will crash on another mailbox, so if I run it several times all mailboxes should be ok. It just doesn't seem very trustworthy...

Another error I don't understand is 

DBERROR db5: Program version 5.1 doesn't match environment version blabla
quota[2478]: DBERROR: dbenv->open '/var/spool/imap/db' failed: DB_VERSION_MISMATCH: Database environment version mismatch

'/var/spool/imap/db' is a directory, so how can there be a database mismatch ? Inside this directory there are a couple of __db* files, that 'file' doesn't recognize, but also a file named log.000010 that seems to be bdb. What are they and should they be deleted before the reconstruct ?

Is there an advantage of choosing a single quota db rather than quotalegacy ? Would the usage of a single db file in twoskip format be faster ?


More information about the Info-cyrus mailing list