[Dovecot] 2.0 beta4 latest hg: segfault with virtual plugin
e-frog
e-frog at gmx.de
Sat Jun 12 11:04:37 EEST 2010
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 at 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
More information about the dovecot
mailing list