On 09.05.2010 16:40, wrote e-frog:
On 16.04.2010 19:23, wrote e-frog:
Hello Timo,
latest 2.0 hg version (changeset a6b050cc4a9a) segfaults when selecting a virtual mailbox.
The attached patch fixes this for me.
Hello Timo,
This crash still happens in beta6. Actually it crashes on 'getquotaroot <virtualmailbox>'. The patch posted earlier still works but there is probably a more elegant way to fix it ...
$ telnet localhost 143 Trying ::1... Connected to localhost. Escape character is '^]'.
- OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready. a login test pass a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS QUOTA] Logged in b select "virtual/unread"
- FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
- OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
- 20 EXISTS
- 1 RECENT
- OK [UNSEEN 1] First unseen.
- OK [UIDVALIDITY 1275936581] UIDs valid
- OK [UIDNEXT 32] Predicted next UID
- OK [HIGHESTMODSEQ 1] Highest b OK [READ-WRITE] Select completed. c getquotaroot "virtual/unread" Connection closed by foreign host.
Here is a fresh backtrace for hg 7a02b84ad7f5:
#0 0xb74f6a56 in array_get_modifiable_i (array=0x8f77c44, count_r=0xbfd6cb64) at ../../../src/lib/array.h:198 No locals. #1 0xb74f7ac1 in virtual_config_free (mbox=0x8f77af0) at virtual-config.c:403 bboxes = 0x8f77ce0 i = 3218525064 count = 3077681140 #2 0xb74fa033 in virtual_mailbox_free (box=0x8f77af0) at virtual-storage.c:327 mbox = 0x8f77af0 #3 0xb7505947 in fts_mailbox_free (box=0x8f77af0) at fts-storage.c:73 fbox = 0x8f780d0 #4 0xb773ff74 in mailbox_free (_box=0xbfd6cc40) at mail-storage.c:638 box = 0x8f77af0 #5 0xb76a33b7 in cmd_getquotaroot (cmd=0x8c8cea0) at imap-quota-plugin.c:116 client = 0x8c8ca98 quser = 0x8c876a0 ns = 0x8c83e20 box = 0x0 iter = 0x0 root = 0x0 mailbox = 0x8c8f758 "virtual/unread" storage_name = 0x8c8f760 "unread" name = 0x8c8ac00 "user" quotaroot_reply = 0x8c632d8 quota_reply = 0x8c63388 #6 0x0805849d in client_command_input (cmd=0x8c8cea0) at imap-client.c:646 client = 0x8c8ca98 command = 0x805918d __FUNCTION__ = "client_command_input" #7 0x080586d0 in client_command_input (cmd=0x8c8cea0) at imap-client.c:696 client = 0x8c8ca98 command = 0x8c6be6c __FUNCTION__ = "client_command_input" #8 0x080587d3 in client_handle_next_command (client=0x8c8ca98, remove_io_r=0xbfd6cd3e) at imap-client.c:737 size = 33 #9 0x08058851 in client_handle_input (client=0x8c8ca98) at imap-client.c:749 _data_stack_cur_id = 3 ret = 8 remove_io = false handled_commands = false __FUNCTION__ = "client_handle_input" #10 0x080589a8 in client_input (client=0x8c8ca98) at imap-client.c:788 cmd = 0x0 output = 0x8c863d4 bytes = 33 __FUNCTION__ = "client_input" #11 0xb76f0d01 in io_loop_handler_run (ioloop=0x8c6b368) at ioloop-epoll.c:212 ctx = 0x8c6b488 events = 0x8c6b4c8 event = 0x8c6b4c8 list = 0x8c83e78 io = 0x8c86430 tv = {tv_sec = 1799, tv_usec = 998763} events_count = 6 t_id = 2 msecs = 1799999 ret = 1 i = 0 j = 0 call = true #12 0xb76efa2e in io_loop_run (ioloop=0x8c6b368) at ioloop.c:350 No locals. #13 0xb76d9994 in master_service_run (service=0x8c6b2b8, callback=0x806343e <client_connected>) at master-service.c:480 No locals. #14 0x08063687 in main (argc=2, argv=0x8c6b1c0) at main.c:359 set_roots = {0x80667a0, 0x0} service_flags = MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN storage_service_flags = MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT postlogin_socket_path = 0x8c63078 "/var/run/dovecot/imap-postlogin" username = 0x0 c = -1
... the content of the dovecot-virtual:
$ cat /etc/dovecot/virtual/unread/dovecot-virtual * unseen
... and finally doveconf -n:
$ doveconf -n # 2.0.beta6 (7a02b84ad7f5): /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-22-generic-pae i686 Ubuntu 10.04 LTS auth_username_format = %Ln deliver_log_format = msgid=%m: from=%f: %$ dict { dictionary = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext } lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes mail_debug = yes mail_plugins = quota virtual namespace { hidden = no inbox = yes list = yes location = prefix = separator = / subscriptions = yes type = private } namespace { location = virtual:/etc/dovecot/virtual:INDEX=~/.maildir/control prefix = virtual/ separator = / subscriptions = no type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { fts = squat fts_squat = partial=4 full=10 quota = dict:user::proxy::dictionary sieve = ~/.dovecot.sieve sieve_dir = ~/.sieve sieve_global_dir = /etc/dovecot/sieve-global/ } postmaster_address = postmaster@ubuntu-test protocols = imap lmtp managesieve quota_full_tempfail = yes sendmail_path = /usr/lib/sendmail service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-userdb { mode = 0666 } } service dict { unix_listener dict { mode = 0666 } } service imap-login { inet_listener imaps { port = 0 } } service imap-postlogin { executable = script-login rawlog -t /opt/bin/imap_wrapper.sh unix_listener imap-postlogin { mode = 0660 } } service imap { executable = imap imap-postlogin } service lmtp { unix_listener /var/spool/postfix/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } ssl = required ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } verbose_proctitle = yes protocol lda { info_log_path = /var/log/deliver.log log_path = /var/log/deliver.log mail_plugins = $mail_plugins sieve } protocol imap { mail_plugins = $mail_plugins fts fts_squat imap_quota } protocol lmtp { mail_plugins = $mail_plugins sieve } protocol managesieve { mail_plugins = virtual }
Thanks, e-frog