Andreas Ntaflos
2009-Aug-28 00:46 UTC
[Dovecot] Crash: imap process, Dovecot 1.2.4, related to ACLs (backtrace included)
Hi,
I started experimenting with ACLs and found I could reliably and reproducibly
crash the IMAP process when trying to create a subfolder of a folder that has
has ACLs set. The folder is called "Sent" with an ACL of "owner
lrwstipke". I
wanted to be able to have certain folders the the user cannot delete but where
subfolders can be created freely.
Relevant information follows and I hope the backtrace is useful (lots of
"value optimized out" entries). You can also find everything from
below on
<https://daff.pseudoterminal.org/misc/dovecot/>.
Please tell me if I can provide more information.
dovecot -n:
==========# 1.2.4: /usr/local/etc/dovecot.conf
# OS: Linux 2.6.26-2-686 i686 Debian 5.0.2
log_timestamp: %Y-%m-%d %H:%M:%S
protocols: managesieve imap imaps pop3 pop3s
login_dir: /usr/local/var/run/dovecot/login
login_executable(default): /usr/local/libexec/dovecot/imap-login
login_executable(imap): /usr/local/libexec/dovecot/imap-login
login_executable(pop3): /usr/local/libexec/dovecot/pop3-login
login_executable(managesieve): /usr/local/libexec/dovecot/managesieve-login
mail_access_groups: mail
mail_privileged_group: mail
mail_location: maildir:~/Maildir
mail_drop_priv_before_exec: yes
mail_executable(default): /usr/local/libexec/dovecot/imap
mail_executable(imap): /usr/local/libexec/dovecot/imap
mail_executable(pop3): /usr/local/libexec/dovecot/pop3
mail_executable(managesieve): /usr/local/libexec/dovecot/managesieve
mail_plugins(default): autocreate acl
mail_plugins(imap): autocreate acl
mail_plugins(pop3):
mail_plugins(managesieve):
mail_plugin_dir(default): /usr/local/lib/dovecot/imap
mail_plugin_dir(imap): /usr/local/lib/dovecot/imap
mail_plugin_dir(pop3): /usr/local/lib/dovecot/pop3
mail_plugin_dir(managesieve): /usr/local/lib/dovecot/managesieve
namespace:
type: public
separator: .
prefix: Public.
location:
maildir:/var/mail/public:CONTROL=~/Maildir/control/public:INDEX=~/Maildir/index/public
list: yes
namespace:
type: private
separator: .
prefix: Backup.
location: maildir:~/Maildir-backup
hidden: yes
list: no
namespace:
type: private
separator: .
inbox: yes
list: yes
subscriptions: yes
lda:
log_path:
info_log_path:
auth_socket_path: /var/run/dovecot/auth-master
postmaster_address: postmaster at mailtest0.rise-s.com
mail_plugins: sieve acl
auth default:
mechanisms: plain login
passdb:
driver: pam
passdb:
driver: sql
args: /etc/dovecot/dovecot-sql.conf
userdb:
driver: passwd
userdb:
driver: static
args: uid=vmail gid=vmail home=/var/vmail/%Ld/%Ln allow_all_users=yes
socket:
type: listen
client:
path: /var/spool/postfix/private/auth
mode: 432
user: postfix
group: postfix
master:
path: /var/run/dovecot/auth-master
mode: 384
user: vmail
plugin:
sieve: ~/.dovecot.sieve
sieve_dir: ~/sieve
sieve_global_path: /etc/dovecot/sieve/default.sieve
sieve_global_dir: /etc/dovecot/sieve/global/
sieve_before: /etc/dovecot/sieve/before/
autocreate: Trash
autocreate2: Drafts
autocreate3: Sent
autocreate4: INBOX.Spam
autosubscribe: Trash
autosubscribe2: Drafts
autosubscribe3: Sent
autosubscribe4: INBOX.Spam
acl: vfile:/etc/dovecot/acl
Log entry:
=========
Aug 28 01:08:01 mailtest0 dovecot: IMAP(andreas.ntaflos at example1.rise-s.com):
Panic: file acl-backend-vfile.c: line 1124 (acl_backend_vfile_object_update):
assertion failed: (!update->rights.global)
Aug 28 01:08:01 mailtest0 dovecot: IMAP(andreas.ntaflos at example1.rise-s.com):
Raw backtrace: imap [0x80f1ec1] -> imap [0x80f1f42] -> imap [0x80f18c9]
->
/usr/local/lib/dovecot/imap/lib01_acl_plugin.so [0xb7dddcf6] ->
/usr/local/lib/dovecot/imap/lib01_acl_plugin.so(acl_object_update+0x18)
[0xb7ddb1a8] -> /usr/local/lib/dovecot/imap/lib01_acl_plugin.so [0xb7de2ac7]
-> imap(cmd_create+0xf9) [0x80618d9] -> imap [0x80679fc] -> imap
[0x8067a99] ->
imap(client_handle_input+0x2d) [0x8067c0d] -> imap(client_input+0x5f)
[0x806856f] -> imap(io_loop_handler_run+0xe0) [0x80fac40] ->
imap(io_loop_run+0x20) [0x80fa0b0] -> imap(main+0x5ea) [0x807104a] ->
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb7e15455] -> imap
[0x8060291]
Aug 28 01:08:01 mailtest0 dovecot: dovecot: child 1588 (imap) killed with
signal 6 (core dumped)
Backtrace:
=========
#0 0xb7f70424 in __kernel_vsyscall ()
No symbol table info available.
#1 0xb7e2a640 in raise () from /lib/i686/cmov/libc.so.6
No symbol table info available.
#2 0xb7e2c018 in abort () from /lib/i686/cmov/libc.so.6
No symbol table info available.
#3 0x080f1ed5 in default_fatal_finish (type=<value optimized out>,
status=0)
at failures.c:160
backtrace = 0x93e5628 "imap [0x80f1ec1] -> imap [0x80f1f42]
-> imap
[0x80f18c9] -> /usr/local/lib/dovecot/imap/lib01_acl_plugin.so [0xb7dddcf6]
->
/usr/local/lib/dovecot/imap/lib01_acl_plugin.so(acl_object_update+0x18)
[0xb"...
#4 0x080f1f42 in i_internal_fatal_handler (type=LOG_TYPE_PANIC, status=0,
fmt=0xb7de3094 "file %s: line %d (%s): assertion failed: (%s)",
args=0xbff8b9c4 "?3?d\004")
at failures.c:440
No locals.
#5 0x080f18c9 in i_panic (format=0xb7de3094 "file %s: line %d (%s):
assertion
failed: (%s)") at failures.c:207
No locals.
#6 0xb7dddcf6 in acl_backend_vfile_object_update (_aclobj=0x942c270,
update=0xbff8bad0) at acl-backend-vfile.c:1124
dotlock = <value optimized out>
path = <value optimized out>
i = <value optimized out>
fd = <value optimized out>
changed = <value optimized out>
__PRETTY_FUNCTION__ = "acl_backend_vfile_object_update"
#7 0xb7ddb1a8 in acl_object_update (aclobj=0x942c270, update=0xbff8bad0) at
acl-api.c:122
No locals.
#8 0xb7de2ac7 in acl_mailbox_create (storage=0x93f2c88, name=0x93f9d98
"Sent.2008", directory=false) at acl-storage.c:160
astorage = <value optimized out>
ret = <value optimized out>
#9 0x080618d9 in cmd_create (cmd=0x93f4ce0) at cmd-create.c:42
ns = <value optimized out>
mailbox = 0x93f9d98 "Sent.2008"
full_mailbox = 0x93f9d98 "Sent.2008"
directory = <value optimized out>
#10 0x080679fc in client_command_input (cmd=0x93f4ce0) at client.c:611
client = (struct client *) 0x93f48a0
command = <value optimized out>
__PRETTY_FUNCTION__ = "client_command_input"
#11 0x08067a99 in client_command_input (cmd=0x93f4ce0) at client.c:660
client = (struct client *) 0x93f48a0
command = <value optimized out>
__PRETTY_FUNCTION__ = "client_command_input"
#12 0x08067c0d in client_handle_input (client=0x93f48a0) at client.c:701
_data_stack_cur_id = 3
ret = false
remove_io = <value optimized out>
handled_commands = false
__PRETTY_FUNCTION__ = "client_handle_input"
#13 0x0806856f in client_input (client=0x93f48a0) at client.c:752
cmd = <value optimized out>
output = (struct ostream *) 0x93f4a54
bytes = <value optimized out>
__PRETTY_FUNCTION__ = "client_input"
#14 0x080fac40 in io_loop_handler_run (ioloop=0x93ed9b0) at ioloop-epoll.c:208
ctx = (struct ioloop_handler_context *) 0x93edab8
event = (const struct epoll_event *) 0x93edaf8
list = (struct io_list *) 0x93f4ab0
io = (struct io_file *) 0x942c888
tv = {tv_sec = 1799, tv_usec = 999357}
t_id = 2
msecs = <value optimized out>
ret = 1
i = 0
j = 0
call = <value optimized out>
#15 0x080fa0b0 in io_loop_run (ioloop=0x93ed9b0) at ioloop.c:335
No locals.
#16 0x0807104a in main (argc=Cannot access memory at address 0x634
) at main.c:327
No locals.
Timo Sirainen
2009-Aug-28 17:42 UTC
[Dovecot] Crash: imap process, Dovecot 1.2.4, related to ACLs (backtrace included)
On Fri, 2009-08-28 at 02:46 +0200, Andreas Ntaflos wrote:> Hi, > > I started experimenting with ACLs and found I could reliably and reproducibly > crash the IMAP process when trying to create a subfolder of a folder that has > has ACLs set. The folder is called "Sent" with an ACL of "owner lrwstipke". I > wanted to be able to have certain folders the the user cannot delete but where > subfolders can be created freely...> acl: vfile:/etc/dovecot/aclYou created a global ACL, right? So /etc/dovecot/acl/Sent? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part URL: <http://dovecot.org/pipermail/dovecot/attachments/20090828/5f2070e3/attachment-0002.bin>
Timo Sirainen
2009-Sep-14 01:11 UTC
[Dovecot] Crash: imap process, Dovecot 1.2.4, related to ACLs (backtrace included)
On Fri, 2009-08-28 at 02:46 +0200, Andreas Ntaflos wrote:> Aug 28 01:08:01 mailtest0 dovecot: IMAP(andreas.ntaflos at example1.rise-s.com): > Panic: file acl-backend-vfile.c: line 1124 (acl_backend_vfile_object_update): > assertion failed: (!update->rights.global)Finally had time to look at this. I think the fix should be that global ACLs simply shouldn't be copied to child mailboxes. Is this also what you want? i.e. user can't delete mails from "Sent", but can delete from "Sent/child". http://hg.dovecot.org/dovecot-1.2/rev/6df681067e0a -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part URL: <http://dovecot.org/pipermail/dovecot/attachments/20090913/81a2bcb2/attachment-0002.bin>
Maybe Matching Threads
- Global ACL configuration problems: mailboxes not visible, set ACLs not honoured
- Dovecot v1.2 assert() in ACL
- Expire plugin: wrong mailbox separators in database?
- Global ACL configuration problems: mailboxes not visible , set ACLs not honoured
- mail archiving (Andreas Ntaflos)