[Dovecot] over quota + antispam crash
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
I am using dovecot 1.1.11 , quota, imap_quota & antispam plugins.
Dovecot crashes when saving a message to the Sent maildir and the account is over quota.
gdb trace attached.
Stéphane Cottin -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkmcQ1IACgkQNgQUYqHIqqsHYgCfdhLHt1KRQeoEOC5ddgFbD2mh 8UMAoIgXbD3ACqcKcftxUHeoPsgByp83 =V6Ch -----END PGP SIGNATURE-----
GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
Attaching to program: /usr/lib/dovecot/imap, process 8619 Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux-x86-64.so.2...done. Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /usr/lib/dovecot/modules/imap/lib10_quota_plugin.so...done. Loaded symbols for /usr/lib/dovecot/modules/imap/lib10_quota_plugin.so Reading symbols from /usr/lib/dovecot/modules/imap/lib11_imap_quota_plugin.so...done. Loaded symbols for /usr/lib/dovecot/modules/imap/lib11_imap_quota_plugin.so Reading symbols from /usr/lib/dovecot/modules/imap/lib90_antispam_plugin.so...done. Loaded symbols for /usr/lib/dovecot/modules/imap/lib90_antispam_plugin.so 0x00002af01c9af9ac in epoll_wait () from /lib/libc.so.6 (gdb) Signal Stop Print Pass to program Description SIGPIPE No Yes Yes Broken pipe (gdb) Signal Stop Print Pass to program Description SIGALRM No No Yes Alarm clock (gdb) Signal Stop Print Pass to program Description SIG32 No Yes Yes Real-time event 32 (gdb) Continuing.
Program received signal SIGSEGV, Segmentation fault. 0x00002af01cd36a63 in antispam_save_init (t=0x5fe0c0, flags=MAIL_SEEN, keywords=0x0, received_date=-1, timezone_offset=0, from_envelope=0x0, input=0x601390, dest_mail=0x6014f8, ctx_r=0x5d92f0) at antispam-storage-1.1.c:170 170 (*ctx_r)->dest_mail = dest_mail; (gdb) #0 0x00002af01cd36a63 in antispam_save_init (t=0x5fe0c0, flags=MAIL_SEEN, keywords=0x0, received_date=-1, timezone_offset=0, from_envelope=0x0, input=0x601390, dest_mail=0x6014f8, ctx_r=0x5d92f0) at antispam-storage-1.1.c:170 ast = (struct antispam_internal_context *) 0x5fea60 asbox = (struct antispam_mailbox *) 0x5dff20 ret = -1 #1 0x0000000000457ce5 in mailbox_save_init (t=0x605cfa, flags=481489778, keywords=0x0, received_date=0, timezone_offset=1818845549, from_envelope=0x7265737520726f66
, input=0x601390, dest_mail=0x0, ctx_r=0x5d92f0) at mail-storage.c:728 No locals. #2 0x0000000000416289 in cmd_append_continue_parsing (cmd=0x5d9238) at cmd-append.c:330 uid2 = <value optimized out> msg = <value optimized out> sync_flags = <value optimized out> imap_flags = <value optimized out> uid_validity = <value optimized out> uid1 = <value optimized out> client = (struct client *) 0x5d8ec0 ctx = (struct cmd_append_context *) 0x5d92b0 args = (const struct imap_arg *) 0x5febb0 flags_list = <value optimized out> flags = MAIL_SEEN keywords_list = (const char * const *) 0x0 keywords = (struct mail_keywords *) 0x0 internal_date_str = 0x0 internal_date = -1 ret = <value optimized out> timezone_offset = 0 nonsync = true __PRETTY_FUNCTION__ = "cmd_append_continue_parsing" #3 0x0000000000416492 in cmd_append (cmd=0x5d9238) at cmd-append.c:502 storage = (struct mail_storage *) 0x5d87e8 box = <value optimized out> client = (struct client *) 0x5d8ec0 ctx = (struct cmd_append_context *) 0x5d92b0 mailbox = 0x5dd410 "Sent" #4 0x000000000041b45c in client_command_input (cmd=0x5d9238) at client.c:580 client = (struct client *) 0x5d8ec0 command = <value optimized out> __PRETTY_FUNCTION__ = "client_command_input" #5 0x000000000041b512 in client_command_input (cmd=0x5d9238) at client.c:629 client = (struct client *) 0x5d8ec0 command = (struct command *) 0x0 __PRETTY_FUNCTION__ = "client_command_input" #6 0x000000000041bccf in client_handle_input (client=0x5d8ec0) at client.c:670 _data_stack_cur_id = 3 ret = <value optimized out> remove_io = <value optimized out> handled_commands = false #7 0x000000000041bef3 in client_input (client=0x5d8ec0) at client.c:725 cmd = <value optimized out> output = (struct ostream *) 0x5d9158 bytes = 488 __PRETTY_FUNCTION__ = "client_input" #8 0x000000000048ce48 in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:203 ctx = <value optimized out> event = (const struct epoll_event *) 0x5d4fa0 list = (struct io_list *) 0x5d7c80 io = (struct io_file *) 0x5d7c40 tv = {tv_sec = 1799, tv_usec = 900117} events_count = <value optimized out> t_id = 2 msecs = <value optimized out> ret = 1 i = 0 call = <value optimized out> #9 0x000000000048bd1d in io_loop_run (ioloop=0x5d4d40) at ioloop.c:336 No locals. #10 0x0000000000423441 in main (argc=<value optimized out>, argv=0x0, envp=0x7fff8e3dbb58) at main.c:293 No locals. (gdb) Detaching from program: /usr/lib/dovecot/imap, process 8619-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Stéphane Cottin a écrit :
Hi,
I am using dovecot 1.1.11 , quota, imap_quota & antispam plugins.
Dovecot crashes when saving a message to the Sent maildir and the account is over quota.
gdb trace attached.
Stéphane Cottin
Hi,
The attached patch seems to fix my bug. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkmdSSUACgkQNgQUYqHIqqt+WgCeOfxt3CiMVs4cQLYVHFl932pM H1gAni6WIB3V+qUr/hwScxMSWVjAvq1s =2zbd -----END PGP SIGNATURE-----
Thanks for the patch, can you check whether it works with just the if (dest_mail)?
johannes
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Johannes Berg a écrit :
Thanks for the patch, can you check whether it works with just the if (dest_mail)?
It doesn't work
the "return -1" is inspired from the end of quota_save_init function (in src/plugins/quota/quota-storage.c)
the if(dest_mail) is not in quota_save_init. it may be unnecessary.
Stéphane
johannes
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkme5AcACgkQNgQUYqHIqqs7vACgjNp27Pf+Hc+9v2GK0NKRXyKC BjUAn0MApH6xBjw+FHCOCT693rhGYduT =kAgf -----END PGP SIGNATURE-----
On Thu, Feb 19, 2009 at 8:57 AM, Stéphane Cottin stephane.cottin@vixns.com wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Stéphane Cottin a écrit :
Hi,
I am using dovecot 1.1.11 , quota, imap_quota & antispam plugins.
Dovecot crashes when saving a message to the Sent maildir and the account is over quota.
gdb trace attached.
Stéphane Cottin
All day long without segfaults!!! :D Many thanks!!!!!!!!!!
participants (3)
-
Allan Cassaro
-
Johannes Berg
-
Stéphane Cottin