> On Mon, Nov 12, 2007 at 12:34:34AM +1100, Bron Gondwana wrote: >> Anyway - here it is. A "recovery()" that copes if the logstart >> parameter in the database header is wrong. No, I don't have a >> clue how that happened unless lseek() lied. Maybe it sometimes >> lies, I don't know. I'll be writing a test case for that soon >> too! > > I have some more suspicions now, but I wrote it all up in the > patch header, so here's the bugfixes only patch, a "robustness" > extras patch and the tool I used for testing. > > Ken, I know you've done some other work on the file changing > types. I'd like to be even more agressive and convert just > about everything to bit32 and also rename some variables, but > I restricted myself in this to only fixing the most ugly case: > offset = htonl(offset). > > These patches are all against 2.3.10 (in this order), and may > need some fuzz fixing to apply against your latest CVS thanks > to those changes - sorry I haven't done that, but it's getting > on 1am for me, and I've just finished doing a lot of testing > and paring these down to simple and clear patches that don't > touch more than they need to fix the issues. > > cyrus-skiplist-bugfixes-2.3.10.diff: > > cyrus-skiplist-robustify-2.3.10.diff: > Hi Bron, I didn't have much troubles with skiplist over the years and it has been a blessing since moving away from BDB. But I did have a few issues with broken skiplist files so your patches are very welcome. I have included the patches in my private rpm packages to try how they work. Do you recommend both for general consumption? Simon ---- 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