Multiple skiplist bugs found, patches attached

Simon Matter simon.matter at
Tue Nov 13 03:12:18 EST 2007

> 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?


More information about the Info-cyrus mailing list