skiplist eats itself

Bron Gondwana brong at fastmail.fm
Tue Dec 25 01:55:16 EST 2007


Check this out for "fun":

cyr_dbtool: cyrusdb_skiplist.c:395: LEVEL: Assertion `((__extension__ ({ register unsigned int __v, __x = (*((bit32 *)(ptr))); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; }))) == DUMMY || ((__extension__ ({ register unsigned int __v, __x = (*((bit32 *)(ptr))); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; }))) == INORDER || ((__extension__ ({ register unsigned int __v, __x = (*((bit32 *)(ptr))); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; }))) == ADD' failed.
sh: line 1: 26873 Aborted                 sudo -u cyrus /usr/cyrus/bin/cyr_dbtool -C /etc/imapd-slot1009-master.conf /mnt/meta9/slot1009/store44/conf/mailboxes.db skiplist show >/mnt/meta9/slot1009/store44/conf/dbbak/mailboxes.txt.1198541222


Now what's particularly interesting about this not 
that it died with a level assertion (though that's
going to be interesting too when I track down what
caused it.  Current suspect is a kernel bug in the
mmap handling actually)

What's interesting is that the skiplist file got
this same text at the start of it as follows -
unsurpisingly causing Cyrus to get VERY unhappy:

00000000  63 79 72 5f 64 62 74 6f  6f 6c 3a 20 63 79 72 75  |cyr_dbtool: cyru|
00000010  73 64 62 5f 73 6b 69 70  6c 69 73 74 2e 63 3a 33  |sdb_skiplist.c:3|
00000020  39 35 3a 20 4c 45 56 45  4c 3a 20 41 73 73 65 72  |95: LEVEL: Asser|
00000030  74 69 6f 6e 20 60 28 28  5f 5f 65 78 74 65 6e 73  |tion `((__extens|
00000040  69 6f 6e 5f 5f 20 28 7b  20 72 65 67 69 73 74 65  |ion__ ({ registe|
00000050  72 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 5f  |r unsigned int _|
00000060  5f 76 2c 20 5f 5f 78 20  3d 20 28 2a 28 28 62 69  |_v, __x = (*((bi|
00000070  74 33 32 20 2a 29 28 70  74 72 29 29 29 3b 20 69  |t32 *)(ptr))); i|
00000080  66 20 28 5f 5f 62 75 69  6c 74 69 6e 5f 63 6f 6e  |f (__builtin_con|
00000090  73 74 61 6e 74 5f 70 20  28 5f 5f 78 29 29 20 5f  |stant_p (__x)) _|
000000a0  5f 76 20 3d 20 28 28 28  28 5f 5f 78 29 20 26 20  |_v = ((((__x) & |
000000b0  30 78 66 66 30 30 30 30  30 30 29 20 3e 3e 20 32  |0xff000000) >> 2|
000000c0  34 29 20 7c 20 28 28 28  5f 5f 78 29 20 26 20 30  |4) | (((__x) & 0|
000000d0  78 30 30 66 66 30 30 30  30 29 20 3e 3e 20 38 29  |x00ff0000) >> 8)|
000000e0  20 7c 20 28 28 28 5f 5f  78 29 20 26 20 30 78 30  | | (((__x) & 0x0|
000000f0  30 30 30 66 66 30 30 29  20 3c 3c 20 38 29 20 7c  |000ff00) << 8) ||
00000100  20 28 28 28 5f 5f 78 29  20 26 20 30 78 30 30 30  | (((__x) & 0x000|
00000110  30 30 30 66 66 29 20 3c  3c 20 32 34 29 29 3b 20  |000ff) << 24)); |
00000120  65 6c 73 65 20 5f 5f 61  73 6d 5f 5f 20 28 22 62  |else __asm__ ("b|
00000130  73 77 61 70 20 25 30 22  20 3a 20 22 3d 72 22 20  |swap %0" : "=r" |
00000140  28 5f 5f 76 29 20 3a 20  22 30 22 20 28 5f 5f 78  |(__v) : "0" (__x|
00000150  29 29 3b 20 5f 5f 76 3b  20 7d 29 29 29 20 3d 3d  |)); __v; }))) ==|
00000160  20 44 55 4d 4d 59 20 7c  7c 20 28 28 5f 5f 65 78  | DUMMY || ((__ex|
00000170  74 65 6e 73 69 6f 6e 5f  5f 20 28 7b 20 72 65 67  |tension__ ({ reg|
00000180  69 73 74 65 72 20 75 6e  73 69 67 6e 65 64 20 69  |ister unsigned i|
00000190  6e 74 20 5f 5f 76 2c 20  5f 5f 78 20 3d 20 28 2a  |nt __v, __x = (*|
000001a0  28 28 62 69 74 33 32 20  2a 29 28 70 74 72 29 29  |((bit32 *)(ptr))|
000001b0  29 3b 20 69 66 20 28 5f  5f 62 75 69 6c 74 69 6e  |); if (__builtin|
000001c0  5f 63 6f 6e 73 74 61 6e  74 5f 70 20 28 5f 5f 78  |_constant_p (__x|
000001d0  29 29 20 5f 5f 76 20 3d  20 28 28 28 28 5f 5f 78  |)) __v = ((((__x|
000001e0  29 20 26 20 30 78 66 66  30 30 30 30 30 30 29 20  |) & 0xff000000) |
000001f0  3e 3e 20 32 34 29 20 7c  20 28 28 28 5f 5f 78 29  |>> 24) | (((__x)|
00000200  20 26 20 30 78 30 30 66  66 30 30 30 30 29 20 3e  | & 0x00ff0000) >|
00000210  3e 20 38 29 20 7c 20 28  28 28 5f 5f 78 29 20 26  |> 8) | (((__x) &|
00000220  20 30 78 30 30 30 30 66  66 30 30 29 20 3c 3c 20  | 0x0000ff00) << |
00000230  38 29 20 7c 20 28 28 28  5f 5f 78 29 20 26 20 30  |8) | (((__x) & 0|
00000240  78 30 30 30 30 30 30 66  66 29 20 3c 3c 20 32 34  |x000000ff) << 24|
00000250  29 29 3b 20 65 6c 73 65  20 5f 5f 61 73 6d 5f 5f  |)); else __asm__|
00000260  20 28 22 62 73 77 61 70  20 25 30 22 20 3a 20 22  | ("bswap %0" : "|
00000270  3d 72 22 20 28 5f 5f 76  29 20 3a 20 22 30 22 20  |=r" (__v) : "0" |
00000280  28 5f 5f 78 29 29 3b 20  5f 5f 76 3b 20 7d 29 29  |(__x)); __v; }))|
00000290  29 20 3d 3d 20 49 4e 4f  52 44 45 52 20 7c 7c 20  |) == INORDER || |
000002a0  28 28 5f 5f 65 78 74 65  6e 73 69 6f 6e 5f 5f 20  |((__extension__ |
000002b0  28 7b 20 72 65 67 69 73  74 65 72 20 75 6e 73 69  |({ register unsi|
000002c0  67 6e 65 64 20 69 6e 74  20 5f 5f 76 2c 20 5f 5f  |gned int __v, __|
000002d0  78 20 3d 20 28 2a 28 28  62 69 74 33 32 20 2a 29  |x = (*((bit32 *)|
000002e0  28 70 74 72 29 29 29 3b  20 69 66 20 28 5f 5f 62  |(ptr))); if (__b|
000002f0  75 69 6c 74 69 6e 5f 63  6f 6e 73 74 61 6e 74 5f  |uiltin_constant_|
00000300  70 20 28 5f 5f 78 29 29  20 5f 5f 76 20 3d 20 28  |p (__x)) __v = (|
00000310  28 28 28 5f 5f 78 29 20  26 20 30 78 66 66 30 30  |(((__x) & 0xff00|
00000320  30 30 30 30 29 20 3e 3e  20 32 34 29 20 7c 20 28  |0000) >> 24) | (|
00000330  28 28 5f 5f 78 29 20 26  20 30 78 30 30 66 66 30  |((__x) & 0x00ff0|
00000340  30 30 30 29 20 3e 3e 20  38 29 20 7c 20 28 28 28  |000) >> 8) | (((|
00000350  5f 5f 78 29 20 26 20 30  78 30 30 30 30 66 66 30  |__x) & 0x0000ff0|
00000360  30 29 20 3c 3c 20 38 29  20 7c 20 28 28 28 5f 5f  |0) << 8) | (((__|
00000370  78 29 20 26 20 30 78 30  30 30 30 30 30 66 66 29  |x) & 0x000000ff)|
00000380  20 3c 3c 20 32 34 29 29  3b 20 65 6c 73 65 20 5f  | << 24)); else _|
00000390  5f 61 73 6d 5f 5f 20 28  22 62 73 77 61 70 20 25  |_asm__ ("bswap %|
000003a0  30 22 20 3a 20 22 3d 72  22 20 28 5f 5f 76 29 20  |0" : "=r" (__v) |
000003b0  3a 20 22 30 22 20 28 5f  5f 78 29 29 3b 20 5f 5f  |: "0" (__x)); __|
000003c0  76 3b 20 7d 29 29 29 20  3d 3d 20 41 44 44 27 20  |v; }))) == ADD' |
000003d0  66 61 69 6c 65 64 2e 0a  66 61 75 6c 74 20 XXXXX  |failed..fault XX|
000003e0  XXXXXXXXXXXXXX 33 40 31  32 33 6d 61 69 6c 2e 6f  |XXXXXX at 123mail.o|
000003f0  72 67 09 6c 72 73 77 69  70 6b 78 74 65 63 64 09  |rg.lrswipkxtecd.|
00000400  61 64 6d 69 6e 09 6c 72  73 77 69 70 6b 78 74 65  |admin.lrswipkxte|
00000410  63 64 61 09 61 6e 79 6f  6e 65 09 70 09 00 00 00  |cda.anyone.p....|
00000420  00 00 04 30 00 00 04 b0  00 00 06 34 ff ff ff ff  |...0.......4....|
00000430  00 00 00 01 00 00 00 1f  31 32 33 6d 61 69 6c 2e  |........123mail.|
00000440  6f 72 67 21 75 73 65 72  2e XXXXXXXXXXXXXXXXXXXX  |org!user.XXXXXXX|
00000450  XX 2e 54 72 61 73 68 00  00 00 00 49 30 20 64 65  |X.Trash....I0 de|
00000460  66 61 75 6c 74 20 XXXXXXXXXXXXXXXXXXXXXXXX 40 31  |fault XXXXXXXX at 1|
00000470  32 33 6d 61 69 6c 2e 6f  72 67 09 6c 72 73 77 69  |23mail.org.lrswi|
00000480  70 6b 78 74 65 63 64 09  61 64 6d 69 6e 09 6c 72  |pkxtecd.admin.lr|
00000490  73 77 69 70 6b 78 74 65  63 64 61 09 61 6e 79 6f  |swipkxtecda.anyo|
000004a0  6e 65 09 70 09 00 00 00  00 00 04 b0 ff ff ff ff  |ne.p............|
000004b0  00 00 00 01 00 00 00 19  31 32 33 6d 61 69 6c 2e  |........123mail.|
000004c0  6f 72 67 21 75 73 65 72  2e YYYYYYYYYYYYYYYYYYYY  |org!user.YYYYYYY|


Nice isn't it.  That's what I suspect I'll be spending the
rest of my Christmas day fixing.

Bron ( pretty sure this one isn't Cyrus' fault, but still )


More information about the Cyrus-devel mailing list