[Dovecot] [PATCH] dovecot-lda with expire plugin segfaults if dict failed
Program received signal SIGSEGV, Segmentation fault. 0x00007f1975cccdee in expire_mailbox_transaction_commit (t=<value optimized out>, changes_r=<value optimized out>) at expire-plugin.c:169 169 } else if (strcmp(value, "0") == 0) { (gdb) bt #0 0x00007f1975cccdee in expire_mailbox_transaction_commit (t=<value optimized out>, changes_r=<value optimized out>) at expire-plugin.c:169 #1 0x00007f1975ed9bdf in quota_mailbox_transaction_commit (ctx=0x659ce0, changes_r=0x7fff94908070) at quota-storage.c:94 #2 0x00007f197775dafd in mailbox_transaction_commit_get_changes (_t=<value optimized out>, changes_r=0x7fff94908070) at mail-storage.c:1491 #3 0x00007f197775db3e in mailbox_transaction_commit (t=0x60d330) at mail-storage.c:1474 #4 0x00007f1975885ff7 in act_store_commit (action=<value optimized out>, aenv=0x6523f0, tr_context=0x652588, keep=0x7fff9490812f) at sieve-actions.c:665 #5 0x00007f197587d79b in sieve_result_execute (result=<value optimized out>, keep=<value optimized out>) at sieve-result.c:1156 #6 0x00007f197588dca6 in sieve_execute (sbin=<value optimized out>, msgdata=<value optimized out>, senv=<value optimized out>, ehandler=<value optimized out>, flags=<value optimized out>, keep=0x0) at sieve.c:475 #7 0x00007f1975ac9a43 in lda_sieve_singlescript_execute (mdctx=0x7fff949085a0, storage_r=<value optimized out>) at lda-sieve-plugin.c:433 #8 lda_sieve_run (mdctx=0x7fff949085a0, storage_r=<value optimized out>) at lda-sieve-plugin.c:657 #9 lda_sieve_deliver_mail (mdctx=0x7fff949085a0, storage_r=<value optimized out>) at lda-sieve-plugin.c:796 #10 0x00007f19779df685 in mail_deliver (ctx=0x7fff949085a0, storage_r=0x7fff94908518) at mail-deliver.c:389 #11 0x000000000040349c in main (argc=5, argv=0x60ca30) at main.c:454 this makes the error go away --- dovecot-2.1.5.orig/src/plugins/expire/expire-plugin.c 2012-05-15 14:52:24.004189104 +0200 +++ dovecot-2.1.5/src/plugins/expire/expire-plugin.c 2012-05-15 14:53:03.472187894 +0200 @@ -166,7 +166,7 @@ /* first time saving here with expire enabled */ first_save_timestamp(box, &new_stamp); update_dict = TRUE; - } else if (strcmp(value, "0") == 0) { + } else if (ret > 0 && strcmp(value, "0") == 0) { /* we're saving the first mail to this mailbox. ioloop_time may not be exactly the first message's save time, but a few seconds -- Michal Grzedzicki
On Tue, 2012-05-15 at 15:08 +0200, Lazy wrote:
Program received signal SIGSEGV, Segmentation fault. 0x00007f1975cccdee in expire_mailbox_transaction_commit (t=<value optimized out>, changes_r=<value optimized out>) at expire-plugin.c:169 169 } else if (strcmp(value, "0") == 0) {
Fixed a bit differently: http://hg.dovecot.org/dovecot-2.1/rev/8f72002cb394
participants (2)
-
Lazy
-
Timo Sirainen