On Mon, 29 Sep 2008 14:47:04 +0100, "Mark Cave-Ayland" <mark.cave-ayland@xxxxxxxxxxxxxx> said: > Bron Gondwana wrote: > > > No, it won't. You need to fix the mailbox or patch the code to not be > > put into an infinite loop by a bogus index file. > > > > The attached patch might do the trick for you. I just slapped it > > together on spec. It compiles, that's about all I can offer about > > it :) > > Hi Bron, > > Thanks for taking the time to respond, it is greatly appreciated. My > colleague Duncan has taken a look at this (see separate email) and found > a corrupted index file which have now been rebuilt. Fingers crossed > that the problem is now resolved (I guess we'll find out in a month or > so) ;) No problem, I've spent a while digging around inside the index code, so I have pretty good idea of where the hairy bits are. I started work a while back on CRC32 checksums for individual index records. Unfortunately, due to the direct memory access pattern used, it would either be a massive CPU hit (re-calculate the CRC32 for every field access) or a memory hit to parse the record into an object each time. Actually, the memory hit isn't that bad (you're generally looking at one record at a time), but there are a LOT of bits of code that access the index records directly. So I went the easy route of just not crashing. I'm tempted to rework that patch with a syslog call so you can know which mailbox needs a reconstruct and then push it upstream. Bron. -- Bron Gondwana brong@xxxxxxxxxxx ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html