On Thu, 2009-12-24 at 11:39 -0500, David Halik wrote:
Dec 24 10:43:07 gehenna11 dovecot: IMAP(user): /rci/nqu/rci/u1/user/dovecot/.INBOX/dovecot-uidlist: Duplicate file entry at line 4: 1231949492.M325236P5922V03E80009I01B6DCA5_0.gehenna9.rutgers.edu,S=4398:2,S (uid 514 -> 721) Dec 24 10:43:08 gehenna11 dovecot: IMAP(user): Maildir /rci/u1/user/Maildir: Expunged message reappeared, giving a new UID (old uid=516, file=1231952516.M164875P24494V03E80009I01B6DCAC_0.gehenna9.rutgers.edu,S=4355:2,S) Dec 24 10:44:38 gehenna11 dovecot: IMAP(user): /rci/nqu/rci/u1/user/dovecot/.INBOX/dovecot-uidlist: Duplicate file entry at line 6: 1233524267.M97899P9543V04240006I01B6E908_0.gehenna5.rutgers.edu,S=3039:2,S (uid 517 -> 723)
Wonder if there's a corresponding "Expunged message reappeared, giving a new UID (old uid=x)" having "Dupliate file entry .. (uid x -> " for each log line? Meaning that the duplicate file entries are caused by those reappearing messages? (And the reappearing messages are probably caused by dentry caching issues.)
Dec 24 10:44:38 gehenna11 dovecot: IMAP(user): Panic: file maildir-uidlist.c: line 405 (maildir_uidlist_records_array_delete): assertion failed: (pos != NULL)
I couldn't previously really figure out how this could happen, even when manually causing the "expunged message reappeared" error. Could you do in gdb something like:
fr 6 (or whatever frame gives usable results) p *rec p count p *recs[0] p *recs[1] p *recs[..up until count-1]
If count is large, the main things I want to know are:
Is the array sorted (recs[n]->uid < recs[n+1]->uid always)?
is rec->uid anywhere in the recs array?
If it complains about values being optimized away, recompile without -O2. I usually do that by just removing it from src/lib-storage/index/maildir/Makefile and touch dovecot-uidlist.c and make + make install.