cyr_expire SIGSEGV

Wolfgang Breyha wbreyha at gmx.net
Thu Jan 18 12:24:22 EST 2007


Hi!

I've a cyrus-imapd-2.3.7-7 built from the src.rpm at invoca.ch running on FC5.

I use the "delayed expunge" feature.

My cyrus.conf therefor has
delprune      cmd="cyr_expire -E 3 -X 2" at=0400

Most of the time cyr_expire runs it crashes with SIGBUS or SIGSEGV.

It also crashes if I start it manually after it crashed during the night.
Doing a strace and "reconstruct -r"ing the user last accessed makes
cyr_expire happy again... at least for this users mailboxes.

I've activated coredumps and the backtrace always shows:
#0  0x0804e6f0 in cyrus_mutex_free ()
#1  0x08053213 in cyrus_mutex_free ()
#2  0x0804cb50 in expire ()
#3  0x0805a955 in mboxlist_findall ()
#4  0x0808ef0e in mboxlist_findall ()
#5  0x08057fc2 in mboxlist_findall ()
#6  0x0804cfa7 in expire ()
#7  0x004554e4 in __libc_start_main () from /lib/libc.so.6
#8  0x0804c6f1 in ?? ()

The last lines from strace shows write access to the quota file....
stat64("/var/spool/imap/user/xxxxx/Trash/cyrus.expunge",
{st_mode=S_IFREG|0600, st_size=736, ...}) = 0
mmap2(NULL, 736, PROT_READ, MAP_SHARED, 9, 0) = 0xb66ba000
lseek(9, 736, SEEK_SET)                 = 736
open("/var/spool/imap/user/xxxxx/Trash/cyrus.expunge.NEW",
O_RDWR|O_CREAT|O_TRUNC, 0666) = 12
time(NULL)                              = 1169137631
write(10, "\0\0\0\357\0\0\0\0\0\0\0\t\0\0\0`\0\0\0P\0\0\0\0E\257?"..., 96) = 96
_llseek(10, 0, [0], SEEK_SET)           = 0
read(10, "\0\0\0\357\0\0\0\0\0\0\0\t\0\0\0`\0\0\0P\0\0\0\0E\257?"..., 4096) = 96
_llseek(10, 96, [96], SEEK_SET)         = 0
open("/var/lib/imap/quota/g/user.xxxxx", O_RDWR) = 13
fcntl64(13, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0
fstat64(13, {st_mode=S_IFREG|0600, st_size=16, ...}) = 0
stat64("/var/lib/imap/quota/g/user.xxxxx", {st_mode=S_IFREG|0600, st_size=16,
...}) = 0
fstat64(13, {st_mode=S_IFREG|0600, st_size=16, ...}) = 0
mmap2(NULL, 16, PROT_READ, MAP_SHARED, 13, 0) = 0xb66b9000
munmap(0xb66b9000, 16)                  = 0
unlink("/var/lib/imap/quota/g/user.xxxxx.NEW") = -1 ENOENT (No such file or
directory)
open("/var/lib/imap/quota/g/user.xxxxx.NEW", O_RDWR|O_CREAT|O_TRUNC, 0666) = 14
fcntl64(14, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0
lseek(14, 0, SEEK_SET)                  = 0
write(14, "30244719\n512000\n", 16)     = 16
ftruncate(14, 16)                       = 0
fsync(14)                               = 0
fstat64(14, {st_mode=S_IFREG|0600, st_size=16, ...}) = 0
rename("/var/lib/imap/quota/g/user.xxxxx.NEW",
"/var/lib/imap/quota/g/user.xxxxx") = 0
fcntl64(14, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
close(14)                               = 0
fcntl64(13, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
close(13)                               = 0
fstat64(12, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb66b9000
time(NULL)                              = 1169137631
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++

Any ideas?

Regards, Wolfgang Breyha



-- 
Wolfgang Breyha <wbreyha at gmx.net> | http://www.blafasel.at/
Vienna University Computer Center | Austria



More information about the Info-cyrus mailing list