After thinking about it enough and not seeing any simple fix for the crash, I did some larger changes to hg which fix this. There's an easy workaround though: Explicitly configure a hierarchy separator for the imapc namespaces.
On 26.6.2013, at 14.16, Marcin Mirosław marcin@mejor.pl wrote:
Hi all! I just upgraded dovecot from 2.2.2 to 2.2.4. Now I can't login to imap, proces imap throws segfault. Here is snip from dovecot.log:
2013-06-25T23:06:47.824321+02:00 meteor dovecot: imap-login: Login: user=marcin@mejor.pl, method=PLAIN, rip=2001:470:1f0b:1ab3:1bc:3b24:d355:b142, lip=2001:470:1f15:1b61::2, mpid=44562, TLS, session=<PaQ86ADgegAgAQRwHwsaswG8OyTTVbFC> 2013-06-25T23:06:47.827616+02:00 meteor dovecot: imap(marcin@mejor.pl) <PaQ86ADgegAgAQRwHwsaswG8OyTTVbFC>: Warning: autocreate plugin is deprecated, use mailbox { auto } setting instead 2013-06-25T23:06:47.830425+02:00 meteor dovecot: imap(marcin@mejor.pl) <PaQ86ADgegAgAQRwHwsaswG8OyTTVbFC>: Fatal: master: service(imap): child 44562 killed with signal 11 (core dumped)
Here is bt created using gdb: Reading symbols from /usr/libexec/dovecot/imap...Reading symbols from /usr/lib64/debug/usr/libexec/dovecot/imap.debug...done. done. [New LWP 17730] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Core was generated by `dovecot/imap'. Program terminated with signal 11, Segmentation fault. #0 imapc_storage_try_get_root_sep (storage=0x0, sep_r=0x3f7bad9bbd7 "") at imapc-storage.c:229 229 i_assert(storage->list != NULL); (gdb) Thread 1 (Thread 0x38656679700 (LWP 17730)): #0 imapc_storage_try_get_root_sep (storage=0x0, sep_r=0x3f7bad9bbd7 "") at imapc-storage.c:229 #1 0x00000386567b8b05 in imapc_list_get_hierarchy_sep (_list=<optimized out>) at imapc-list.c:196 #2 0x00000386567b8fff in imapc_list_get_fs_name (list=0xdba28f030, name=0x0) at imapc-list.c:282 #3 0x00000386567b9291 in imapc_list_get_path (_list=<optimized out>, name=0x0, type=MAILBOX_LIST_PATH_TYPE_MAILBOX, path_r=0x3f7bad9bcc8) at imapc-list.c:323 #4 0x00000386567db675 in mailbox_list_get_root_path (list=<optimized out>, type=<optimized out>, path_r=0x3f7bad9bcc8) at mailbox-list.c:1258 #5 0x0000038655c75d15 in quota_add_user_namespace (quota=0xdba288e80, ns=0xdba28eee0) at quota.c:704 #6 0x0000038655c7d0ea in quota_mailbox_list_created (list=0xdba292480) at quota-storage.c:590 #7 0x00000386567d64d2 in hook_mailbox_list_created (list=0xdba292480) at mail-storage-hooks.c:319 #8 0x00000386567da297 in mailbox_list_create (driver=<optimized out>, ns=0xdba28eee0, set=0x3f7bad9be20, flags=<optimized out>, list_r=0xdba28f228, error_r=0x3f7bad9be80) at mailbox-list.c:206 #9 0x00000386567b8f63 in imapc_list_get_fs (list=0xdba28f030) at imapc-list.c:265 #10 0x00000386567b927e in imapc_list_get_path (_list=<optimized out>, name=0x0, type=MAILBOX_LIST_PATH_TYPE_MAILBOX, path_r=0x3f7bad9bf18) at imapc-list.c:319 #11 0x00000386567db675 in mailbox_list_get_root_path (list=<optimized out>, type=<optimized out>, path_r=0x3f7bad9bf18) at mailbox-list.c:1258 #12 0x0000038655c75d15 in quota_add_user_namespace (quota=0xdba288e80, ns=0xdba28eee0) at quota.c:704 #13 0x0000038655c7d0ea in quota_mailbox_list_created (list=0xdba28f030) at quota-storage.c:590 #14 0x00000386567d64d2 in hook_mailbox_list_created (list=0xdba28f030) at mail-storage-hooks.c:319 #15 0x00000386567da297 in mailbox_list_create (driver=<optimized out>, ns=0xdba28eee0, set=0x3f7bad9c090, flags=<optimized out>, list_r=0x3f7bad9c0e8, error_r=0x3f7bad9c1a0) at mailbox-list.c:206 #16 0x00000386567d15c1 in mail_storage_create_full (ns=0xdba28eee0, driver=<optimized out>, data=<optimized out>, flags=(unknown: 0), storage_r=0x3f7bad9c150, error_r=0x3f7bad9c1a0) at mail-storage.c:356 #17 0x00000386567d181c in mail_storage_create (ns=<optimized out>, driver=<optimized out>, flags=<optimized out>, error_r=<optimized out>) at mail-storage.c:407 #18 0x00000386567c9b25 in namespace_add (user=0xdba283e90, ns_set=<optimized out>, unexpanded_ns_set=0xdba284668, mail_set=0xdba284f98, ns_p=0xdba28c5b0, error_r=0x3f7bad9c300) at mail-namespace.c:170 #19 0x00000386567caba7 in mail_namespaces_init (user=0xdba283e90, error_r=0x3f7bad9c300) at mail-namespace.c:344 #20 0x00000386567e1acf in mail_storage_service_init_post (error_r=0x3f7bad9c300, mail_user_r=0x3f7bad9c3d0, priv=0x3f7bad9c2d0, user=0xdba272c38, ctx=<optimized out>) at mail-storage-service.c:653 #21 mail_storage_service_next (ctx=<optimized out>, user=0xdba272c38, mail_user_r=0x3f7bad9c3d0) at mail-storage-service.c:1158 #22 0x00000386567e1e35 in mail_storage_service_lookup_next (ctx=0xdba26e4b0, input=<optimized out>, user_r=0x3f7bad9c3c8, mail_user_r=0x3f7bad9c3d0, error_r=0x3f7bad9c430) at mail-storage-service.c:1193 #23 0x0000000db6f824e9 in client_create_from_input (input=0x3f7bad9c440, login_client=0xdba270660, fd_in=12, fd_out=12, input_buf=0x3f7bad9c4b0, error_r=<optimized out>) at main.c:204 #24 0x0000000db6f827f7 in login_client_connected (client=0xdba270660, username=<optimized out>, extra_fields=<optimized out>) at main.c:277 #25 0x00000386566a97e6 in master_login_auth_finish (client=0xdba270660, auth_args=<optimized out>) at master-login.c:209 #26 0x00000386566a9b45 in master_login_auth_callback (auth_args=0xdba264ee8, errormsg=0x0, context=<optimized out>) at master-login.c:377 #27 0x00000386566aa558 in master_login_auth_input_user (args=<optimized out>, auth=<optimized out>) at master-login-auth.c:243 #28 master_login_auth_input (auth=0xdba26fa10) at master-login-auth.c:363 #29 0x0000038656704cf6 in io_loop_call_io (io=0xdba2709f0) at ioloop.c:387 #30 0x0000038656705f0f in io_loop_handler_run (ioloop=<optimized out>) at ioloop-epoll.c:215 #31 0x00000386567046f0 in io_loop_run (ioloop=0xdba26d2b0) at ioloop.c:406 #32 0x00000386566ac017 in master_service_run (service=0xdba26d140, callback=<optimized out>) at master-service.c:560 #33 0x0000000db6f82ebc in main (argc=1, argv=0xdba26cf20) at main.c:400 (gdb) quit
doveconf -n: # 2.2.4: /etc/dovecot/dovecot.conf # OS: Linux 3.9.6-hardened x86_64 Gentoo Base System release 2.2 auth_cache_size = 1 k auth_mechanisms = login digest-md5 cram-md5 plain deliver_log_format = msgid=%m: from=%f: phys=%p: virt=%w %$ dict { quota = pgsql:/etc/dovecot/dovecot-dict-sql.conf.ext } first_valid_uid = 8 last_valid_uid = 8 lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes mail_attachment_dir = /dane/domeny/zalaczniki mail_attachment_min_size = 10000 k mail_cache_min_mail_count = 20 mail_gid = mail mail_log_prefix = "%s(%u) <%{session}>: " mail_plugins = autocreate quota notify mail_log stats zlib mail_privileged_group = mail mail_uid = mail maildir_stat_dirs = yes 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 mdbox_preallocate_space = yes mdbox_rotate_interval = 60 days mdbox_rotate_size = 50 M namespace inbox { inbox = yes list = 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 = separator = . subscriptions = yes } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { autocreate = Trash autocreate2 = Spam autocreate3 = Sent autocreate4 = Drafts autosubscribe = Trash autosubscribe2 = Spam autosubscribe3 = Sent autosubscribe4 = Drafts quota = dict:User quota::proxy::quota sieve = ~/.dovecot.sieve sieve_dir = ~/sieve stats_command_min_time = 1 mins stats_domain_min_time = 12 hours stats_ip_min_time = 12 hours stats_memory_limit = 1M stats_refresh = 30 s stats_session_min_time = 15 mins stats_track_cmds = yes stats_user_min_time = 1 hours zlib_save = gz } postmaster_address = postmaster@mejor.pl protocols = imap pop3 sieve service auth { unix_listener auth-userdb { group = mail mode = 0660 user = root } } service dict { unix_listener dict { user = mail } } service stats { fifo_listener stats-mail { mode = 0600 user = mail } } ssl_cert =
I'm also using namespaces and imapc defined in database (as settings per user). Thanks, Marcin