[Dovecot] Lazyexpunge and Segmentation fault

mailing at securitylabs.it mailing at securitylabs.it
Thu Dec 10 12:55:02 EET 2009


On 09/12/2009 21:03, Timo Sirainen wrote:
> You still happen to have the core file? I'd like to know a few more
> things:
>
>    
>> #0  lazy_expunge_mail_expunge (_mail=0x9907ae8) at lazy-expunge-plugin.c:116
>> 116                     lt->expunge_box =
>>      
> p *lt
> p *deststorage
> p *_mail
> p *_mail.box
>
> Anyway there's something weird going on there. It shouldn't crash on
> that line. So either gcc optimizations confused gdb and it's actually
> crashing elsewhere (recompiling+reinstalling the plugin without -O2
> parameter would help with this),
>    
Hello, I've recompiled dovecot with -O0 and here a new backtrace:

GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/i686/nosegneg/libdl.so.2...done.
Loaded symbols for /lib/i686/nosegneg/libdl.so.2
Reading symbols from /lib/i686/nosegneg/librt.so.1...done.
Loaded symbols for /lib/i686/nosegneg/librt.so.1
Reading symbols from /lib/i686/nosegneg/libc.so.6...done.
Loaded symbols for /lib/i686/nosegneg/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/i686/nosegneg/libpthread.so.0...done.
Loaded symbols for /lib/i686/nosegneg/libpthread.so.0
Reading symbols from 
/usr/local/lib/dovecot/imap/lib02_lazy_expunge_plugin.so...done.
Loaded symbols for /usr/local/lib/dovecot/imap/lib02_lazy_expunge_plugin.so
Reading symbols from 
/usr/local/lib/dovecot/imap/lib10_quota_plugin.so...done.
Loaded symbols for /usr/local/lib/dovecot/imap/lib10_quota_plugin.so
Reading symbols from 
/usr/local/lib/dovecot/imap/lib11_imap_quota_plugin.so...done.
Loaded symbols for /usr/local/lib/dovecot/imap/lib11_imap_quota_plugin.so
Reading symbols from 
/usr/local/lib/dovecot/imap/lib20_mail_log_plugin.so...done.
Loaded symbols for /usr/local/lib/dovecot/imap/lib20_mail_log_plugin.so
Core was generated by `imap'.
Program terminated with signal 11, Segmentation fault.
[New process 14769]
#0  0xb7fb45c9 in lazy_expunge_mail_expunge (_mail=0x844df58) at 
lazy-expunge-plugin.c:115
115                     deststorage = 
luser->lazy_ns[LAZY_NAMESPACE_EXPUNGE]->storage;
(gdb) bt full
#0  0xb7fb45c9 in lazy_expunge_mail_expunge (_mail=0x844df58) at 
lazy-expunge-plugin.c:115
         luser = (struct lazy_expunge_mail_user *) 0x841c060
         lt = (struct lazy_expunge_transaction *) 0x844de28
         deststorage = (struct mail_storage *) 0x844de40
#1  0x080c658f in mail_expunge (mail=0x844df58) at mail.c:207
         p = (struct mail_private *) 0x844df58
#2  0x0806c294 in imap_expunge (box=0x8423538, next_search_arg=0x0) at 
imap-expunge.c:35
         ctx = (struct mail_search_context *) 0x844de40
         t = (struct mailbox_transaction_context *) 0x844ca58
         mail = (struct mail *) 0x844df58
         search_args = (struct mail_search_args *) 0x0
         expunges = false
#3  0x0806267e in cmd_expunge_finish (cmd=0x841e4d0, search_args=0x0) at 
cmd-expunge.c:27
         client = (struct client *) 0x841e250
#4  0x0806283f in cmd_expunge (cmd=0x841e4d0) at cmd-expunge.c:78
No locals.
#5  0x0806a3c7 in client_command_input (cmd=0x841e4d0) at client.c:612
         client = (struct client *) 0x841e250
         command = (struct command *) 0x2
         __PRETTY_FUNCTION__ = "client_command_input"
#6  0x0806a5f3 in client_command_input (cmd=0x841e4d0) at client.c:661
         client = (struct client *) 0x841e250
         command = (struct command *) 0x841a6a0
         __PRETTY_FUNCTION__ = "client_command_input"
#7  0x0806a6fe in client_handle_next_command (client=0x841e250, 
remove_io_r=0xbfb94035) at client.c:702
         size = 11
#8  0x0806a783 in client_handle_input (client=0x841e250) at client.c:714
         _data_stack_cur_id = 3
         ret = 65
         remove_io = false
         handled_commands = false
         __PRETTY_FUNCTION__ = "client_handle_input"
#9  0x0806a8e1 in client_input (client=0x841e250) at client.c:753
         cmd = (struct client_command_context *) 0xb7f2af78
         output = (struct ostream *) 0x841e404
         bytes = 11
         __PRETTY_FUNCTION__ = "client_input"
#10 0x08124721 in io_loop_handler_run (ioloop=0x84199b0) at 
ioloop-epoll.c:208
         ctx = (struct ioloop_handler_context *) 0x8419ab8
         events = (struct epoll_event *) 0x8419af8
         event = (const struct epoll_event *) 0x8419af8
         list = (struct io_list *) 0x841c228
         io = (struct io_file *) 0x841e460
         tv = {tv_sec = 1799, tv_usec = 999144}
         events_count = 3
         t_id = 2
         msecs = 1800000
         ret = 1
         i = 0
         j = 0
         call = true
#11 0x081239d8 in io_loop_run (ioloop=0x84199b0) at ioloop.c:335
No locals.
#12 0x08075b16 in main (argc=1, argv=0xbfb94194, envp=0xbfb9419c) at 
main.c:327
No locals.

>or there is some memory corruption
>which is probably going to be tricky to find without valgrind.

That's a virtual machine inside Xen, may be a problem?

Thanks for your support, Igor



More information about the dovecot mailing list