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