[Dovecot] LMTP crash with sdbox and SIS
Debian Wheezy amd64 plus Stefan's stable-auto/dovecot2.2 repository 2:2.2.2-0~auto+57 = 16495:d447dcc6b611
Crash goes away when I disable mail_attachment_dir, happens with a fresh home as well
# 2.2.2 (d447dcc6b611): /etc/dovecot/dovecot.conf # OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.0 disable_plaintext_auth = no first_valid_uid = 100 mail_attachment_dir = /home/studext/attachment mail_gid = ext mail_location = sdbox:~/sdbox:INDEX=~/Index mail_plugins = quota mail_uid = studext managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = INBOX. separator = . } passdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } plugin { quota = dict:User quota::file:%h/Maildir/dovecot-quota quota_rule = INBOX.Trash:ignore quota_rule2 = ?:storage=512M sieve = ~/currently-active-script.sieve sieve_dir = ~/sieve } protocols = " imap lmtp sieve pop3" service lmtp { executable = lmtp -D inet_listener lmtp { port = 24 } } ssl_cert =
(gdb) bt full
#0 0x00007fc270f11475 in raise () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1 0x00007fc270f146f0 in abort () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#2 0x00007fc2712cbdf8 in default_fatal_finish (type=<optimized out>, status=status@entry=0) at failures.c:191
backtrace = 0x97e900 "/usr/lib/dovecot/libdovecot.so.0(+0x62dea) [0x7fc2712cbdea] -> /usr/lib/dovecot/libdovecot.so.0(+0x62e2e) [0x7fc2712cbe2e] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7fc27128bda5] -> /usr/lib/d"...
#3 0x00007fc2712cbe2e in i_internal_fatal_handler (ctx=0x7fff6b38a7c0, format=<optimized out>, args=<optimized out>)
at failures.c:652
status = 0
#4 0x00007fc27128bda5 in i_panic (format=format@entry=0x7fc2712f18c8 "file %s: line %d (%s): assertion failed: (%s)")
at failures.c:263
ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0}
args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fff6b38a8b0, reg_save_area = 0x7fff6b38a7f0}}
#5 0x00007fc2712d4734 in i_stream_read (stream=0x9c3740) at istream.c:163
_stream = 0x9c36e0
old_size = 0
ret = -1
__FUNCTION__ = "i_stream_read"
#6 0x00007fc2715ca2c9 in index_attachment_save_continue (ctx=0x9b7ef0) at index-attachment.c:206
storage = 0x9ae590
attach = 0x9c3310
data = <optimized out>
size = 1
ret = <optimized out>
#7 0x00007fc2715a78a8 in mail_storage_try_copy (mail=0x9a3c60, _ctx=0x7fff6b38a928) at mail-copy.c:80
ctx = 0x9b7ef0
pmail = 0x9a3c60
input = 0x9b57c0
#8 mail_storage_copy (ctx=ctx@entry=0x9b7ef0, mail=mail@entry=0x9a3c60) at mail-copy.c:101
No locals.
#9 0x00007fc271576810 in sdbox_copy (_ctx=<optimized out>, mail=<optimized out>) at sdbox-copy.c:172
ctx = <optimized out>
_t = <optimized out>
mbox = <optimized out>
__FUNCTION__ = "sdbox_copy"
#10 0x00007fc2706b1320 in quota_copy (ctx=0x9b7ef0, mail=0x9a3c60) at quota-storage.c:220
t = 0x9b4b70
qt = 0x9b7e80
qbox = 0x9b2450
#11 0x00007fc2715afadf in mailbox_copy (_ctx=_ctx@entry=0x7fff6b38aaa8, mail=0x9a3c60) at mail-storage.c:2116
ctx = 0x9b7ef0
t = 0x9b4b70
keywords = 0x0
pvt_flags = 0
---Type <return> to continue, or q <return> to quit---
real_mail = <optimized out>
ret = <optimized out>
__FUNCTION__ = "mailbox_copy"
#12 0x00007fc2715afb8c in mailbox_save_using_mail (ctx=ctx@entry=0x7fff6b38aaa8, mail=<optimized out>) at mail-storage.c:2147
No locals.
#13 0x00007fc27184ddde in mail_deliver_save (ctx=ctx@entry=0x7fff6b38ac10, mailbox=<optimized out>, flags=flags@entry=0,
keywords=keywords@entry=0x0, storage_r=storage_r@entry=0x7fff6b38abe8) at mail-deliver.c:311
open_ctx = {user = 0x9aa470, lda_mailbox_autocreate = false, lda_mailbox_autosubscribe = false}
box = 0x9b1e80
trans_flags = <optimized out>
t = 0x9b4b70
save_ctx = 0x0
headers_ctx = 0x0
kw = 0x0
error = MAIL_ERROR_NONE
mailbox_name = 0x40892f "INBOX"
errstr = <optimized out>
guid = 0x7fc271847d98 "W\n"
changes = {pool = 0x7fc271a52788, uid_validity = 1798876136, saved_uids = {arr = {buffer = 0x9992d0,
element_size = 140473107114581}, v = 0x9992d0, v_modifiable = 0x9992d0}, ignored_modseq_changes = 10165232,
changed = false, no_read_perm = false}
default_save = <optimized out>
ret = 0
__FUNCTION__ = "mail_deliver_save"
#14 0x00007fc27184e203 in mail_deliver (ctx=ctx@entry=0x7fff6b38ac10, storage_r=storage_r@entry=0x7fff6b38abe8)
at mail-deliver.c:413
ret = -1
#15 0x0000000000406282 in client_deliver (session=0x9a8480, src_mail=0x9a3c60, rcpt=0x98b770, client=0x98af00) at commands.c:689
lda_set = 0x999b00
ns = <optimized out>
set_parser = <optimized out>
line = <optimized out>
storage = 0x9ae590
sets = <optimized out>
mail_error = MAIL_ERROR_NONE
ret = <optimized out>
dctx = {pool = 0x9a8460, set = 0x999b00, session = 0x9a8480, dup_ctx = 0x0,
session_id = 0x98b710 "zeL+MQ/QuFGZTgAAUJ203Q", src_mail = 0x9a3c60, src_envelope_sender = 0x98b728 "schmidt@xxx.de",
dest_user = 0x9aa470, dest_addr = 0x98bd70 "ext44903@mstoretest.mail.xxx.de",
final_dest_addr = 0x98bd70 "ext44903@mstoretest.mail.xxx.de", dest_mailbox_name = 0x40892f "INBOX",
dest_mail = 0x9b8830, var_expand_table = 0x0, tempfail_error = 0x0, tried_default_save = true, saved_mail = false,
save_dest_mail = false, mailbox_full = false, dsn = false}
input = <optimized out>
mail_set = 0x9992d0
error = <optimized out>
username = <optimized out>
#16 client_deliver_next (session=0x9a8480, src_mail=0x9a3c60, client=0x98af00) at commands.c:732
rcpts = 0x98b770
count = 1
#17 client_input_data_write_local (input=<optimized out>, client=0x98af00) at commands.c:827
src_mail = 0x9a3c60
first_uid = 4294967295
session = 0x9a8480
old_uid = 0
#18 client_input_data_write (client=0x98af00) at commands.c:938
input = 0x99b5b0
ret = true
#19 client_input_data_handle (client=0x98af00) at commands.c:1032
data = <optimized out>
size = 1794
ret = <optimized out>
#20 0x00007fc2712db996 in io_loop_call_io (io=0x98a3b0) at ioloop.c:387
ioloop = 0x985700
t_id = 2
#21 0x00007fc2712dc807 in io_loop_handler_run (ioloop=ioloop@entry=0x985700) at ioloop-epoll.c:215
ctx = 0x988530
events = 0x0
event = 0x9885a0
list = 0x98a400
io = <optimized out>
tv = {tv_sec = 299, tv_usec = 992938}
events_count = <optimized out>
msecs = <optimized out>
ret = 1
i = <optimized out>
call = <optimized out>
__FUNCTION__ = "io_loop_handler_run"
#22 0x00007fc2712db4d8 in io_loop_run (ioloop=0x985700) at ioloop.c:406
No locals.
#23 0x00007fc271291013 in master_service_run (service=0x985590, callback=callback@entry=0x404dd0
Bernhard Schmidt berni@birkenwald.de wrote:
Debian Wheezy amd64 plus Stefan's stable-auto/dovecot2.2 repository 2:2.2.2-0~auto+57 = 16495:d447dcc6b611
Crash goes away when I disable mail_attachment_dir, happens with a fresh home as well
Log:
Jun 12 21:46:23 lxmhs69 dovecot: lmtp(20120, ext44903@mstoretest.mail.xxx.de): Panic: file istream.c: line 163 (i_stream_read): assertion failed: (old_size == _stream->pos - _stream->skip) Jun 12 21:46:23 lxmhs69 dovecot: lmtp(20120, ext44903@mstoretest.mail.xxx.de): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x62dea) [0x7fc8363e9dea] -> /usr/lib/dovecot/libdovecot.so.0(+0x62e2e) [0x7fc8363e9e2e] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7fc8363a9da5] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read+0x184) [0x7fc8363f2734] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_attachment_save_continue+0x29) [0x7fc8366e82c9] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_storage_copy+0x78) [0x7fc8366c58a8] -> /usr/lib/dovecot/libdovecot-storage.so.0(sdbox_copy+0x60) [0x7fc836694810] -> /usr/lib/dovecot/modules/lib10_quota_plugin.so(+0xb320) [0x7fc8357cf320] -> /usr/lib/dovecot/libdovecot-storage.so.0(mailbox_copy+0x5f) [0x7fc8366cdadf] -> /usr/lib/dovecot/libdovecot-lda.so.0(mail_deliver_save+0x16e) [0x7fc83696bdde] -> /usr/lib/dovecot/libdovecot-lda.so.0(mail_deliver+0x113) [0x7fc83696c203] -> dovecot/lmtp() [0x406282] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x36) [0x7fc8363f9996] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0xd7) [0x7fc8363fa807] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x28) [0x7fc8363f94d8] -> /usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7fc8363af013] -> dovecot/lmtp(main+0x184) [0x404c24] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd) [0x7fc83601bead] -> dovecot/lmtp() [0x404ce9]
Regards, Bernhard
On Wed, 2013-06-12 at 19:51 +0000, Bernhard Schmidt wrote:
Debian Wheezy amd64 plus Stefan's stable-auto/dovecot2.2 repository 2:2.2.2-0~auto+57 = 16495:d447dcc6b611
Crash goes away when I disable mail_attachment_dir, happens with a fresh home as well .. Jun 12 21:46:23 lxmhs69 dovecot: lmtp(20120, ext44903@mstoretest.mail.xxx.de): Panic: file istream.c: line 163 (i_stream_read): assertion failed: (old_size == _stream->pos - _stream->skip)
Can you easily reproduce this? Does it happen with all mails? Only mails that contain attachments? Only one specific mail? I couldn't reproduce with a couple of tests.
Am 13.06.2013 03:56, schrieb Timo Sirainen:
On Wed, 2013-06-12 at 19:51 +0000, Bernhard Schmidt wrote:
Debian Wheezy amd64 plus Stefan's stable-auto/dovecot2.2 repository 2:2.2.2-0~auto+57 = 16495:d447dcc6b611
Crash goes away when I disable mail_attachment_dir, happens with a fresh home as well .. Jun 12 21:46:23 lxmhs69 dovecot: lmtp(20120, ext44903@mstoretest.mail.xxx.de): Panic: file istream.c: line 163 (i_stream_read): assertion failed: (old_size == _stream->pos - _stream->skip)
Can you easily reproduce this? Does it happen with all mails? Only mails that contain attachments? Only one specific mail? I couldn't reproduce with a couple of tests.
I can reproduce with mails with a random attachment > 128k. I'm using smtp-cli to test
dd if=/dev/random of=random1M bs=1M count=1 ./smtp-cli-3.2 --server <serverlist> --from <sender> --to <recipient> --subject Test --attach=random1M
I can send you a sample.
Bernhard
On 13.6.2013, at 10.34, Bernhard Schmidt berni@birkenwald.de wrote:
Jun 12 21:46:23 lxmhs69 dovecot: lmtp(20120, ext44903@mstoretest.mail.xxx.de): Panic: file istream.c: line 163 (i_stream_read): assertion failed: (old_size == _stream->pos - _stream->skip)
Can you easily reproduce this? Does it happen with all mails? Only mails that contain attachments? Only one specific mail? I couldn't reproduce with a couple of tests.
I can reproduce with mails with a random attachment > 128k. I'm using smtp-cli to test
dd if=/dev/random of=random1M bs=1M count=1 ./smtp-cli-3.2 --server <serverlist> --from <sender> --to <recipient> --subject Test --attach=random1M
Thanks, fixed: http://hg.dovecot.org/dovecot-2.2/rev/9dcbcc0871f0
participants (2)
-
Bernhard Schmidt
-
Timo Sirainen