[Dovecot] Dovecot 2.0beta4 HG 11014: Crashes on parsing settings via LMTP service
Hi,
unfortunately no core was dumped. Let me know if you need more info to debug.
==> /var/log/dovecot.log <== Mar 27 08:13:38 spectre dovecot: lmtp(8362): Connect from local Mar 27 08:13:38 spectre dovecot: lmtp(8362): Panic: file settings-parser.c: line 1501 (settings_link_get_new): assertion failed: (diff + sizeof(*old_link->array) <= old_link->parent->info->struct_size) Mar 27 08:13:38 spectre dovecot: lmtp(8362): Raw backtrace: /usr/lib/dovecot/libdovecot.so.0 [0x7f055dec6712] -> /usr/lib/dovecot/libdovecot.so.0 [0x7f055dec677a] -> /usr/lib/dovecot/libdovecot.so.0(i_error+0) [0x7f055dec6b23] -> /usr/lib/dovecot/libdovecot.so.0 [0x7f055dea6993] -> /usr/lib/dovecot/libdovecot.so.0(settings_parser_dup+0x1d2) [0x7f055dea6be2] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_storage_service_lookup+0x191) [0x7f055e1370c1] -> dovecot/lmtp(cmd_rcpt+0x4d4) [0x407924] -> dovecot/lmtp(client_input_handle+0x19b) [0x4066db] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0xcb) [0x7f055ded144b] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x18) [0x7f055ded05c8] -> /usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7f055dec0323] -> dovecot/lmtp(main+0x123) [0x405bf3] -> /lib/libc.so.6(__libc_start_main+0xe6) [0x7f055d74d1a6] -> dovecot/lmtp [0x4059f9] Mar 27 08:13:38 spectre dovecot: master: service(lmtp): child 8362 killed with signal 6 (core not dumped)
Regards Thomas
On 27.3.2010, at 9.19, Thomas Leuxner wrote:
Mar 27 08:13:38 spectre dovecot: lmtp(8362): Connect from local Mar 27 08:13:38 spectre dovecot: lmtp(8362): Panic: file settings-parser.c: line 1501 (settings_link_get_new): assertion failed: (diff + sizeof(*old_link->array) <= old_link->parent->info->struct_size)
Immediate after connecting? Or after some command? Anyway, no, I can't reproduce it. dovecot -n might help.
Am 27.03.2010 um 08:29 schrieb Timo Sirainen:
On 27.3.2010, at 9.19, Thomas Leuxner wrote:
Mar 27 08:13:38 spectre dovecot: lmtp(8362): Connect from local Mar 27 08:13:38 spectre dovecot: lmtp(8362): Panic: file settings-parser.c: line 1501 (settings_link_get_new): assertion failed: (diff + sizeof(*old_link->array) <= old_link->parent->info->struct_size)
Immediate after connecting? Or after some command? Anyway, no, I can't reproduce it. dovecot -n might help.
So here's all I have, with what Postfix sees upon delivery:
==> /var/log/mail.log <== Mar 27 08:29:30 spectre postfix/qmgr[20867]: 4E84D407F: from=<tss@iki.fi>, size=1614, nrcpt=1 (queue active) Mar 27 08:29:30 spectre postfix/lmtp[8556]: 4E84D407F: to=<tlx@leuxner.net>, relay=spectre.leuxner.net[private/dovecot-lmtp], delay=14, delays=14/0/0/0, dsn=4.4.2, status=deferred (lost connection with spectre.leuxner.net[private/dovecot-lmtp] while sending MAIL FROM)
# 2.0.beta4: /etc/dovecot/dovecot.conf # OS: Linux 2.6.26-2-amd64 x86_64 Debian 5.0.4 auth_verbose = yes mail_location = mdbox:~/mdbox mail_plugins = acl quota namespace { hidden = no inbox = yes location = prefix = separator = / type = private } namespace { list = yes location = maildir:/var/vmail/public:LAYOUT=fs:INDEX=~/public prefix = Public/ separator = / subscriptions = no type = public } passdb { args = username_format=%u /var/vmail/auth.d/%d/passwd driver = passwd-file } plugin { acl = vfile:/var/vmail/conf.d/%d/acls:cache_secs=300 mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename quota = dict:user::file:%h/mdbox/dovecot-quota quota_rule = *:storage=1GB quota_rule2 = Trash:storage=10%% sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_global_dir = /var/vmail/conf.d/%d/sieve } protocols = imap lmtp service auth-worker { user = doveauth } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } user = doveauth } service imap-login { inet_listener imap { address = 1.2.3.4 port = 143 } inet_listener imaps { port = 0 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } ssl_cert = </etc/ssl/certs/spectre_leuxner_net_2009.crt ssl_key = </etc/ssl/private/spectre_leuxner_net_2009.key syslog_facility = local0 userdb { args = username_format=%u /var/vmail/auth.d/%d/passwd driver = passwd-file } verbose_proctitle = yes protocol lmtp { mail_plugins = $mail_plugins sieve } protocol imap { mail_plugins = $mail_plugins imap_acl imap_quota mail_log notify }
Steps to reproduce failure:
a) do fresh start of Dovecot instance b) fire mail to myself via mail-client (not crashed yet), reply to my own mail afterwards (crashes 100%)
Does not make a difference whether using Unix or Inet sockets for the LMTP part.
Hope that helps to narrow down…
Thomas
Crashes when the lmtp process has delivered the first message and receives the LHLO in the 2nd connection for the 2nd message. Backtrace is attached.
Regards, Pascal
The trapper recommends today: decade.1008616@localdomain.org
Continuing.
Program received signal SIGABRT, Aborted. 0x00007f0a6ad85f45 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. in ../nptl/sysdeps/unix/sysv/linux/raise.c #0 0x00007f0a6ad85f45 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 pid = <value optimized out> selftid = <value optimized out> #1 0x00007f0a6ad88d80 in *__GI_abort () at abort.c:88 act = {__sigaction_handler = {sa_handler = 0x7fff9b5aa6e0, sa_sigaction = 0x7fff9b5aa6e0}, sa_mask = {__val = {139682731539097, 139682731535023, 140735799797504, 139682731722280, 14692690896, 140735799797712, 139682731535664, 139682718788272, 139682739197120, 206158430224, 4294967295, 140735799797536, 139682731257856, 4217520, 140735799799344, 0}}, sa_flags = 0, sa_restorer = 0x28d858} sigs = {__val = {32, 0 <repeats 15 times>}} #2 0x00007f0a6b982787 in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at failures.c:164 backtrace = 0x13da458 "/usr/local/dovecot20/lib/dovecot/libdovecot.so.0 [0x7f0a6b982760] -> /usr/local/dovecot20/lib/dovecot/libdovecot.so.0 [0x7f0a6b983a71] -> /usr/local/dovecot20/lib/dovecot/libdovecot.so.0(i_fatal+0) [0"... #3 0x00007f0a6b983a71 in i_internal_fatal_handler (type=LOG_TYPE_PANIC, status=0, fmt=0x7f0a6b9aaca8 "file %s: line %d (%s): assertion failed: (%s)", args=0x7fff9b5aa850) at failures.c:592 No locals. #4 0x00007f0a6b982aaf in i_panic (format=0x7f0a6b9aaca8 "file %s: line %d (%s): assertion failed: (%s)") at failures.c:230 args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fff9b5aa940, reg_save_area = 0x7fff9b5aa870}} #5 0x00007f0a6b959a30 in settings_link_get_new (new_ctx=0x14c9048, links=0x13fe9b0, old_link=0x141d170) at settings-parser.c:1501 new_link = 0x14c9170 old_sets = 0x7fff9b5aa9b8 new_sets = 0x13e78c0 i = 0 count = 32522 count2 = 1805158536 diff = 128 __FUNCTION__ = "settings_link_get_new" #6 0x00007f0a6b959fca in settings_parser_dup (old_ctx=0x141d048, new_pool=0x14c2020) at settings-parser.c:1573 new_ctx = 0x14c9048 iter = 0x13e78c0 new_link = 0x7f0a6b9a67b4 links = 0x13fe9b0 key = 0x141d1a8 value = 0x141d170 i = 4 parser_pool = 0x14c9020 __FUNCTION__ = "settings_parser_dup" #7 0x00007f0a6bc0abd0 in mail_storage_service_lookup (ctx=0x1401048, input=0x7fff9b5aab00, user_r=0x7fff9b5aab60, error_r=0x7fff9b5aaae8) at mail-storage-service.c:791 user = 0x14c2df0 username = 0x14835c8 "xxxx" user_info = 0x14c2108 user_set = 0x14071b0 userdb_fields = 0x14835a0 reply = {uid = 31, gid = 0, home = 0x13da228 "xxxx@el-presidente.edelhost.de", chroot = 0x7fff9b5aaac0 "\240\253Z\233\377\177", extra_fields = {arr = {buffer = 0x405ab0, element_size = 140735799799344}, v = 0x405ab0, v_modifiable = 0x405ab0}} set_parser = 0x141d048 user_pool = 0x14c2020 temp_pool = 0x1483570 ret = 1 #8 0x0000000000407e33 in cmd_rcpt (client=0x14b5048, args=0x14be04a "TO:<xxxx@el-presidente.edelhost.de>") at commands.c:383 rcpt = {address = 0x0, detail = 0x0, service_user = 0x0} input = {module = 0x40dc6e "lmtp", service = 0x40dc6e "lmtp", username = 0x13da228 "xxxx@el-presidente.edelhost.de", local_ip = {family = 10, u = {ip6 = {__in6_u = { __u6_addr8 = '\000' <repeats 15 times>, "\001", __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 256}, __u6_addr32 = {0, 0, 0, 16777216}}}, ip4 = {s_addr = 0}}}, remote_ip = {family = 10, u = {ip6 = { __in6_u = {__u6_addr8 = '\000' <repeats 15 times>, "\001", __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 256}, __u6_addr32 = {0, 0, 0, 16777216}}}, ip4 = {s_addr = 0}}}, userdb_fields = 0x0} address = 0x13da228 "xxxx@el-presidente.edelhost.de" username = 0x13da228 "xxxx@el-presidente.edelhost.de" detail = 0x40dbdf "" error = 0x0 arg = 0x13da100 "TO:<xxxx@el-presidente.edelhost.de>" argv = 0x13da130 len = 35 ret = 0 #9 0x0000000000405ea5 in client_input_line (client=0x14b5048, line=0x14be045 "RCPT TO:<xxxx@el-presidente.edelhost.de>") at client.c:57 cmd = 0x13da0f8 "RCPT" args = 0x14be04a "TO:<xxxx@el-presidente.edelhost.de>" #10 0x0000000000406080 in client_input_handle (client=0x14b5048) at client.c:108 _data_stack_cur_id = 3 output = 0x1404558 line = 0x14be045 "RCPT TO:<xxxx@el-presidente.edelhost.de>" ret = 0 #11 0x00000000004060f5 in client_input (client=0x14b5048) at client.c:121 No locals. #12 0x00007f0a6b9935ba in io_loop_handler_run (ioloop=0x13e6f60) at ioloop-epoll.c:208 ctx = 0x13fafc0 events = 0x13fb800 event = 0x13fb800 list = 0x13e7f20 io = 0x14a7380 tv = {tv_sec = 59, tv_usec = 999399} events_count = 6 t_id = 2 msecs = 60000 ret = 1 i = 0 j = 0 call = true #13 0x00007f0a6b992265 in io_loop_run (ioloop=0x13e6f60) at ioloop.c:350 No locals. #14 0x00007f0a6b97b34a in master_service_run (service=0x13e5f00, callback=0x405b94 <client_connected>) at master-service.c:486 No locals. #15 0x0000000000405d40 in main (argc=2, argv=0x1399040) at main.c:96 set_roots = {0x40e900, 0x40e440, 0x0} service_flags = MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN storage_service_flags = 739 c = -1 LND: Sending signal 6 to Thread 0x7f0a6c0cb6f0 (LWP 5671) Detaching from program: /usr/local/dovecot20/libexec/dovecot/lmtp, process 5671
On 27.3.2010, at 9.19, Thomas Leuxner wrote:
Mar 27 08:13:38 spectre dovecot: lmtp(8362): Panic: file settings-parser.c: line 1501 (settings_link_get_new): assertion failed: (diff + sizeof(*old_link->array) <= old_link->parent->info->struct_size)
http://hg.dovecot.org/dovecot-2.0/rev/b791ebb2c700 should fix it.
Am 29.03.2010 um 16:30 schrieb Timo Sirainen:
On 27.3.2010, at 9.19, Thomas Leuxner wrote:
Mar 27 08:13:38 spectre dovecot: lmtp(8362): Panic: file settings-parser.c: line 1501 (settings_link_get_new): assertion failed: (diff + sizeof(*old_link->array) <= old_link->parent->info->struct_size)
http://hg.dovecot.org/dovecot-2.0/rev/b791ebb2c700 should fix it.
Looks fine with latest changeset: 11016. Thanks Timo :)
participants (3)
-
Pascal Volk
-
Thomas Leuxner
-
Timo Sirainen