[Dovecot] dovecot 1.1.beta3 crashes on NetBSD/sparc64 4.0_RC3 with Thunderbird 2.0.0.6
Lloyd Parkes
lloyd at must-have-coffee.gen.nz
Sun Oct 21 10:48:14 EEST 2007
Hi all,
I'm getting core dumps from Dovecot when using Thunderbird as a client.
Everything is fine when using the Apple Mail client. I've appended the
debug dumps to this message so they are out of the way, but they should
be read now.
I think the problem might be that io->prev and io->next aren't reliably
initialised in ioloop.c:io_add. The value that io->prev has when the
program crashes is just completely bogus. It isn't aligned correctly,
and it doesn't point to anywhere inside the process's memory map. I
don't know what *io->next is, but it sure doesn't look like a struct
io_file. It doesn't even look like a struct io. Part of the garbage in
*io->next is the char sequence "/vol/home/lloyd/Maildir/new" which is
part of my mail box.
*io is not in the doubly linked list in current_io_look->io_files. I'm
guessing that this object has been unlinked already. Some further
digging (not shown here) shows that io->callback is notify_callback. It
is set to NULL by the time imap crashes.
Here are all the gory GDB details:
Version: 1.1.beta3
OS: NetBSD 4.0_RC3/sparc64 (a 64 bit big endian architecture)
Client: Mozilla Thunderbird 2.0.0.6
bt full:
#0 0x00000000001e846c in io_file_unlink (io=0x32e2c0) at ioloop.c:54
No locals.
#1 0x00000000001e8568 in io_remove (_io=0x3420a8) at ioloop.c:82
io_file = (struct io_file *) 0x32e2c0
io = (struct io *) 0x32e2c0
#2 0x000000000017a0a4 in index_mailbox_check_remove_all (ibox=0x331048)
at index-mailbox-check.c:118
file = (struct index_notify_file *) 0x0
aio = (struct index_notify_io *) 0x3420a0
#3 0x0000000000139850 in maildir_notify_changes (box=0x331048)
at maildir-storage.c:824
mbox = (struct maildir_mailbox *) 0x331048
#4 0x00000000001c0724 in mailbox_notify_changes (box=0x331048,
min_interval=0, callback=0, context=0x0) at mail-storage.c:544
No locals.
#5 0x00000000001c074c in mailbox_notify_changes_stop (box=0x331048)
at mail-storage.c:550
No locals.
#6 0x00000000001167fc in idle_finish (ctx=0x3380b0, done_ok=true,
free_cmd=true) at cmd-idle.c:48
client = (struct client *) 0x334100
#7 0x0000000000116a04 in idle_client_input (ctx=0x3380b0) at cmd-idle.c:90
client = (struct client *) 0x334100
line = 0x33a075 "DONE"
#8 0x00000000001ea2ac in io_loop_handler_run (ioloop=0x320080)
at ioloop-kqueue.c:149
ctx = (struct ioloop_handler_context *) 0x32e080
events = (struct kevent *) 0x332000
event = (const struct kevent *) 0x332000
tv = {tv_sec = 0, tv_usec = 999441}
ts = {tv_sec = 0, tv_nsec = 999441000}
io = (struct io_file *) 0x320a80
events_count = 4
t_id = 2
msecs = 1000
ret = 1
i = 0
__PRETTY_FUNCTION__ = "io_loop_handler_run"
#9 0x00000000001e8f28 in io_loop_run (ioloop=0x320080) at ioloop.c:303
No locals.
#10 0x000000000012d710 in main (argc=1, argv=0xffffffffffffc978,
envp=0xffffffffffffc988) at main.c:293
No locals.
More GDB Info:
(gdb) print *io
$2 = {io = {condition = 0, callback = 0, context = 0x331048},
prev = 0x10000000d, next = 0x32e280, refcount = 0, fd = 0}
(gdb) print *io->next
$18 = {io = {condition = 0, callback = 0, context = 0x471a982100000000},
prev = 0x0, next = 0x2f766f6c2f686f6d, refcount = 1697606764,
fd = 1870226479}
(gdb) print *current_ioloop->io_files
$35 = {io = {condition = IO_READ, callback = 0x1e9284 <event_callback>,
context = 0x342080}, prev = 0x0, next = 0x320140, refcount = 1, fd = 11}
(gdb) print *current_ioloop->io_files->next
$36 = {io = {condition = IO_ERROR, callback = 0x12ca70 <log_error_callback>,
context = 0x0}, prev = 0x320a00, next = 0x3200c0, refcount = 1, fd = 2}
(gdb) print *current_ioloop->io_files->next->next
$37 = {io = {condition = IO_READ, callback = 0x1ea6f0 <signal_read>,
context = 0x0}, prev = 0x320140, next = 0x0, refcount = 1, fd = 5}
(gdb) print io
$1 = (struct io_file *) 0x32e2c0
(gdb) print *current_ioloop
$2 = {prev = 0x0, io_files = 0x320a00, next_io_file = 0x0,
timeouts = 0x320a40, handler_context = 0x32e080,
notify_handler_context = 0x342080, running = 1}
More information about the dovecot
mailing list