dotlock causing crashes
Aki Tuomi
aki.tuomi at dovecot.fi
Fri Aug 18 13:38:31 EEST 2017
On 16.08.2017 21:17, Ian Bobbitt wrote:
> OS: CentOS 7 x86_64
> Dovecot version: 2.2.31 (65cde28) (GhettoForge RPM)
> Filesystem: GlusterFS, but working on changing that. Only one server is receiving activity.
>
> Was getting messages about corrupt dovecot.map.index files. Changed to dotlock from fcntl to try to fix that.
>
> Reading symbols from /usr/libexec/dovecot/imap...(no debugging symbols found)...done.
> [New LWP 74012]
> Core was generated by `dovecot/imap'.
> Program terminated with signal 6, Aborted.
> #0 0x00007fa262c741d7 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> 56 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
> (gdb) bt full
> #0 0x00007fa262c741d7 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> resultvar = 0
> pid = 74012
> selftid = 74012
> #1 0x00007fa262c758c8 in __GI_abort () at abort.c:90
> save_stage = 2
> act = {__sigaction_handler = {sa_handler = 0x7ffd7009f401, sa_sigaction = 0x7ffd7009f401}, sa_mask = {__val =
> {0, 0, 140335431377968, 140335423109592, 140335422613219, 4246482, 140335418575669, 12278048, 4192326493288016896,
> 12278592, 140335423192931, 0, 0, 140335425698848, 12280232, 140726483153732}}, sa_flags = 1657305400, sa_restorer = 0x79a}
> sigs = {__val = {32, 0 <repeats 15 times>}}
> #2 0x00007fa26309eac6 in default_fatal_finish (type=<optimized out>, status=status at entry=0) at failures.c:201
> backtrace = 0xbb5958 "/usr/lib64/dovecot/libdovecot.so.0(+0x9eace) [0x7fa26309eace] ->
> /usr/lib64/dovecot/libdovecot.so.0(+0x9ebae) [0x7fa26309ebae] -> /usr/lib64/dovecot/libdovecot.so.0(i_fatal+0)
> [0x7fa26303012c] -> /usr"...
> #3 0x00007fa26309ebae in i_internal_fatal_handler (ctx=0x7ffd7009f4d0, format=<optimized out>, args=<optimized out>) at
> failures.c:670
> status = 0
> #4 0x00007fa26303012c in i_panic (format=format at entry=0x7fa2630d11de "file %s: line %d: unreached") at failures.c:275
> ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0, timestamp_usecs = 0}
> args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffd7009f5d0, reg_save_area = 0x7ffd7009f510}}
> #5 0x00007fa2630a344f in file_lock_do (fd=fd at entry=20, path=path at entry=0xbb5868
> "/gnoc/mail/home/bgeels/mail/mailboxes/Junk/dbox-Mails/.vsize.lock23f657caa43d8796", lock_type=lock_type at entry=1,
> lock_method=lock_method at entry=FILE_LOCK_METHOD_DOTLOCK, timeout_secs=0, error_r=error_r at entry=0x7ffd7009f768) at
> file-lock.c:285
> lock_type_str = 0x7fa2630e6948 "write-lock"
> started = 1502905468
> ret = <optimized out>
> __FUNCTION__ = "file_lock_do"
> #6 0x00007fa2630a3796 in file_wait_lock_error (fd=20, path=0xbb5868
> "/gnoc/mail/home/bgeels/mail/mailboxes/Junk/dbox-Mails/.vsize.lock23f657caa43d8796", lock_type=1,
> lock_method=FILE_LOCK_METHOD_DOTLOCK, timeout_secs=<optimized out>, lock_r=0xc4ec10, error_r=0x7ffd7009f768) at
> file-lock.c:314
> ret = <optimized out>
> #7 0x00007fa2630a3813 in file_try_lock_error (fd=<optimized out>, path=<optimized out>, lock_type=lock_type at entry=1,
> lock_method=lock_method at entry=FILE_LOCK_METHOD_DOTLOCK, lock_r=lock_r at entry=0xc4ec10,
> error_r=error_r at entry=0x7ffd7009f768) at file-lock.c:66
> No locals.
> #8 0x00007fa2630a0955 in try_create_new (error_r=0x7ffd7009f768, lock_r=0xc4ec10, fd_r=0x7ffd7009f700,
> set=0x7ffd7009f770, path=0xc2f930 "/gnoc/mail/home/bgeels/mail/mailboxes/Junk/dbox-Mails/.vsize.lock") at
> file-create-locked.c:65
> fd = 20
> orig_errno = <optimized out>
> ret = -1
> temp_path = 0xbb5830
> mode = 0
> uid = <optimized out>
> gid = 4294967295
> #9 file_create_locked (path=0xc2f930 "/gnoc/mail/home/bgeels/mail/mailboxes/Junk/dbox-Mails/.vsize.lock",
> set=set at entry=0x7ffd7009f770, lock_r=lock_r at entry=0xc4ec10, created_r=created_r at entry=0x7ffd7009f767,
> error_r=error_r at entry=0x7ffd7009f768) at file-create-locked.c:118
> i = 0
> fd = <optimized out>
> ret = <optimized out>
> __FUNCTION__ = "file_create_locked"
> #10 0x00007fa2633e8f80 in vsize_update_lock_full (update=0xc4ebd0, lock_secs=lock_secs at entry=0) at index-mailbox-size.c:150
> box = 0xc2e268
> perm = 0xc2e440
> set = {lock_timeout_secs = 0, lock_method = FILE_LOCK_METHOD_DOTLOCK, mode = 384, uid = 0, gid = 4294967295,
> gid_origin = 0xc2ea58 "/gnoc/mail/home/bgeels/mail/mailboxes/Junk"}
> error = 0x7fa2633f2062 <index_storage_get_status+66> "1\300[]A\\\303\017\037\200"
> created = false
> #11 0x00007fa2633e9057 in index_mailbox_vsize_update_try_lock (update=<optimized out>) at index-mailbox-size.c:167
> No locals.
> #12 0x00007fa2633e9755 in index_mailbox_vsize_update_appends (box=<optimized out>) at index-mailbox-size.c:479
> update = 0xc4ebd0
> status = {messages = 1323, recent = 0, unseen = 0, uidvalidity = 1413091786, uidnext = 6750, first_unseen_seq =
> 0, first_recent_uid = 5886, last_cached_seq = 0, highest_modseq = 0, highest_pvt_modseq = 0, keywords = 0x0,
> permanent_flags = 0, flags = 0, permanent_keywords = 0, allow_new_keywords = 0, nonpermanent_modseqs = 0,
> no_modseq_tracking = 0, have_guids = 1,
> have_save_guids = 1, have_only_guid128 = 0}
> #13 0x00007fa2633f633c in index_mailbox_sync_deinit (_ctx=0xc4ece0, status_r=0x7ffd7009f900) at index-sync.c:346
> ctx = 0xc4ece0
> sync_rec = {seq1 = 0, seq2 = 0, type = (unknown: 0)}
> delayed_expunges = false
> ret = <optimized out>
> #14 0x00007fa2633784b2 in mailbox_sync_deinit (_ctx=_ctx at entry=0x7ffd7009f910, status_r=status_r at entry=0x7ffd7009f900)
> at mail-storage.c:1868
> ctx = <optimized out>
> box = 0xc2e268
> errormsg = <optimized out>
> error = MAIL_ERROR_NONE
> ret = <optimized out>
> #15 0x00007fa263378589 in mailbox_sync (box=<optimized out>, flags=<optimized out>, flags at entry=(unknown: 0)) at
> mail-storage.c:1894
> ctx = 0x0
> status = {sync_delayed_expunges = 0}
> #16 0x00007fa26221ae4f in imap_sieve_mailbox_transaction_run (changes=0x7ffd7009fb50, dest_box=0xc00a08, ismt=<optimized
> out>) at imap-sieve-storage.c:727
> sbox = 0xc2e268
> isrun = 0xc27580
> cause = 0x7fa26221c447 "COPY"
> ret = <optimized out>
> isuser = <optimized out>
> mevent = <optimized out>
> headers_ctx = 0xbb53a0
> st = 0x1
> isrun_src = 0x0
> siter = {array = 0xbb57f8, prev_n = 8, prev_idx = 0}
> script_name = 0x0
> can_discard = true
> src_mail = 0x0
> wanted_headers = {0x7fa26221c567 "From", 0x7fa26221c56c "To", 0x7fa26221c136 "Message-ID", 0x7fa26221c56f
> "Subject", 0x7fa26221c577 "Return-Path", 0x0}
> src_box = 0xbe2f78
> user = <optimized out>
> mail = 0xbd7228
> #17 imap_sieve_mailbox_transaction_commit (t=<optimized out>, changes_r=0x7ffd7009fb50) at imap-sieve-storage.c:808
> box = 0xc00a08
> user = <optimized out>
> ismt = <optimized out>
> lbox = <optimized out>
> isuser = 0xbd6d30
> ret = 0
> #18 0x00007fa2628337fa in acl_transaction_commit (ctx=0xc28060, changes_r=0x7ffd7009fb50) at acl-mailbox.c:460
> abox = 0xc01018
> at = <optimized out>
> ret = <optimized out>
> #19 0x00007fa2633789b1 in mailbox_transaction_commit_get_changes (_t=<optimized out>, changes_r=0x7ffd7009fb50) at
> mail-storage.c:2042
> _data_stack_cur_id = 4
> t = 0xc28060
> box = 0xc00a08
> save_count = 1
> ret = <optimized out>
> __FUNCTION__ = "mailbox_transaction_commit_get_changes"
> #20 0x000000000040e94c in cmd_copy_full ()
> No symbol table info available.
> #21 0x000000000041accc in command_exec ()
> No symbol table info available.
> #22 0x000000000041932f in client_command_input ()
> No symbol table info available.
> #23 0x00000000004193c1 in client_command_input ()
> No symbol table info available.
> #24 0x0000000000419765 in client_handle_input ()
> No symbol table info available.
> #25 0x0000000000419c42 in client_input ()
> No symbol table info available.
> #26 0x00007fa2630b3782 in io_loop_call_io (io=0xbd1dc0) at ioloop.c:599
> ioloop = 0xbbd9a0
> t_id = 2
> __FUNCTION__ = "io_loop_call_io"
> #27 0x00007fa2630b4e0f in io_loop_handler_run_internal (ioloop=ioloop at entry=0xbbd9a0) at ioloop-epoll.c:223
> ctx = 0xbbf4c0
> events = <optimized out>
> list = 0xbc0f20
> io = <optimized out>
> tv = {tv_sec = 1799, tv_usec = 999317}
> events_count = <optimized out>
> msecs = <optimized out>
> ret = 1
> i = 0
> call = <optimized out>
> __FUNCTION__ = "io_loop_handler_run_internal"
> #28 0x00007fa2630b381c in io_loop_handler_run (ioloop=ioloop at entry=0xbbd9a0) at ioloop.c:648
> No locals.
> #29 0x00007fa2630b39d8 in io_loop_run (ioloop=0xbbd9a0) at ioloop.c:623
> __FUNCTION__ = "io_loop_run"
> #30 0x00007fa26303a6e3 in master_service_run (service=0xbbd840, callback=<optimized out>) at master-service.c:666
> No locals.
> #31 0x000000000040cbd2 in main ()
> No symbol table info available.
>
> # 2.2.31 (65cde28): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.4.19 (e5c7051)
> doveconf: Warning: service auth { client_limit=20480 } is lower than required under max. load (24576)
> # OS: Linux 3.10.0-514.21.2.el7.x86_64 x86_64 CentOS Linux release 7.3.1611 (Core)
> auth_cache_negative_ttl = 0
> auth_cache_size = 10 M
> auth_master_user_separator = *
> auth_mechanisms = plain login
> auth_username_format = %Ln
> auth_verbose = yes
> auth_worker_max_count = 100
> base_dir = /var/run/dovecot/
> default_client_limit = 2048
> default_process_limit = 4096
> default_vsz_limit = 1 G
> dict {
> acl = mysql:/etc/dovecot/dovecot-sql-dict.conf.ext
> }
> first_valid_uid = 1000
> lda_mailbox_autocreate = yes
> lda_mailbox_autosubscribe = yes
> lock_method = dotlock
> mail_attachment_dir = /gnoc/mail/attachments/
> mail_attachment_fs = sis-queue /gnoc/mail/attachments/queue/:posix
> mail_attachment_hash = %{sha256}
> mail_fsync = always
> mail_gid = vmail
> mail_location = mdbox:~/mail
> mail_nfs_index = yes
> mail_nfs_storage = yes
> mail_plugins = " listescape acl"
> mail_uid = vmail
> 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 index ihave duplicate mime
> foreverypart extracttext spamtest spamtestplus editheader vnd.dovecot.debug imapsieve vnd.dovecot.imapsieve
> mdbox_rotate_size = 20 M
> mmap_disable = yes
> namespace {
> list = children
> location = mdbox:%%h/mail:INDEXPVT=~/mail/shared/%%u
> prefix = shared/%%u/
> separator = /
> subscriptions = no
> type = shared
> }
> namespace inbox {
> inbox = yes
> location =
> mailbox Archive {
> special_use = \Archive
> }
> mailbox Archives {
> special_use = \Archive
> }
> mailbox Drafts {
> auto = subscribe
> special_use = \Drafts
> }
> mailbox Junk {
> special_use = \Junk
> }
> mailbox Sent {
> special_use = \Sent
> }
> mailbox "Sent Messages" {
> special_use = \Sent
> }
> mailbox Spam {
> special_use = \Junk
> }
> mailbox Trash {
> auto = subscribe
> special_use = \Trash
> }
> mailbox sent-mail {
> special_use = \Sent
> }
> prefix =
> separator = /
> }
> passdb {
> args = /etc/dovecot/dovecot-sql-pass-sieve.conf.ext
> driver = sql
> }
> passdb {
> args = /etc/dovecot/dovecot-sql-pass-nologin.conf.ext
> driver = sql
> }
> passdb {
> args = /etc/dovecot/dovecot-ldap-proxy.conf.ext
> driver = ldap
> override_fields = proxy=Y host=mail1-new.grnoc.iu.edu starttls=any-cert noauthenticate=yes
> }
> passdb {
> args = /etc/dovecot/passwd.masterusers
> driver = passwd-file
> master = yes
> pass = yes
> }
> passdb {
> args = /etc/dovecot/dovecot-sql.conf.ext
> driver = sql
> }
> plugin {
> acl = vfile:/gnoc/mail/dict/acls:cache_secs=300
> acl_shared_dict = proxy::acl
> imapsieve_mailbox1_before = file:/etc/dovecot/sieve/report-spam.sieve
> imapsieve_mailbox1_causes = COPY
> imapsieve_mailbox1_name = Spam
> imapsieve_mailbox2_before = file:/etc/dovecot/sieve/report-spam.sieve
> imapsieve_mailbox2_causes = COPY
> imapsieve_mailbox2_name = Junk
> imapsieve_mailbox3_before = file:/etc/dovecot/sieve/report-ham.sieve
> imapsieve_mailbox3_causes = COPY
> imapsieve_mailbox3_from = Spam
> imapsieve_mailbox3_name = *
> imapsieve_mailbox4_before = file:/etc/dovecot/sieve/report-ham.sieve
> imapsieve_mailbox4_causes = COPY
> imapsieve_mailbox4_from = Junk
> imapsieve_mailbox4_name = *
> sieve = ~/.dovecot.sieve
> sieve_before = /etc/dovecot/sieve/before
> sieve_before2 = /gnoc/mail/home/%Ln/sieve-before
> sieve_dir = ~/sieve
> sieve_extensions = +spamtest +spamtestplus +vnd.dovecot.debug +editheader
> sieve_global_dir = /etc/dovecot/sieve/global
> sieve_global_extensions = +vnd.dovecot.pipe
> sieve_pipe_bin_dir = /etc/dovecot/sieve/bin
> sieve_plugins = sieve_imapsieve sieve_extprograms
> sieve_spamtest_max_header = X-Spam-Status: \w+, score=-?[[:digit:]]+\.[[:digit:]]+ required=([[:digit:]]+\.[[:digit:]]+)
> sieve_spamtest_status_header = X-Spam-Status: \w+, score=(-?[[:digit:]]+\.[[:digit:]])
> sieve_spamtest_status_type = score
> }
> protocols = imap pop3 lmtp sieve
> service anvil {
> client_limit = 16387
> }
> service auth {
> client_limit = 20480
> unix_listener /var/spool/postfix/private/auth {
> group = postfix
> mode = 0666
> user = postfix
> }
> }
> service dict {
> unix_listener dict {
> group = vmail
> mode = 0660
> user = vmail
> }
> }
> service imap {
> process_limit = 4096
> vsz_limit = 1 G
> }
> service lmtp {
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> group = postfix
> mode = 0600
> user = postfix
> }
> vsz_limit = 1 G
> }
> service managesieve-login {
> inet_listener sieve {
> port = 4190
> }
> }
> ssl = required
> ssl_ca = </etc/pki/tls/cert.pem
> ssl_cert = </var/lib/acme/live/mail.ctc.grnoc.iu.edu/fullchain
> ssl_cipher_list =
> ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
> ssl_dh_parameters_length = 2048
> ssl_key = # hidden, use -P to show it
> ssl_prefer_server_ciphers = yes
> ssl_protocols = !SSLv2 !SSLv3
> ssl_require_crl = no
> userdb {
> args = /etc/dovecot/dovecot-sql.conf.ext
> driver = sql
> }
> protocol lmtp {
> mail_plugins = " listescape acl sieve"
> postmaster_address = postmaster at globalnoc.iu.edu
> }
> protocol lda {
> mail_plugins = " listescape acl sieve"
> }
> protocol imap {
> mail_max_userip_connections = 100
> mail_plugins = " listescape acl imap_acl imap_sieve"
> }
>
Hi!
This problem is caused by mailbox vsize code not supporting dotlocks. I
have opened an issue about this.
Aki
More information about the dovecot
mailing list