Hi All,
In Dovecot 2.4.1 if I start doveadm force-resync with a non-existent
mailbox that ends in a slash, the command crashes:
gdb -ex run --args doveadm force-resync -A test/
Thread 1 (Thread 0x7f9e5cc4a980 (LWP 442) "doveadm"):
#0 fs_list_next_root(ctx=ctx@entry=0x55d248df6898) at
list/mailbox-list-fs-iter.c:507
roots= <error reading variable roots (Cannot access memory at address 0x0)>
count= <error reading variable count (Cannot access memory at address 0x8)>
__func__= "fs_list_next_root"
#1 0x00007f9e5dc417c2in fs_list_iter_reset(ctx=0x55d248df6898) at
list/mailbox-list-fs-iter.c:830
__func__= <optimized out>
#2 fs_list_iter_next(_ctx=0x55d248df6898) at list/mailbox-list-fs-iter.c:912
ctx= <optimized out>
ret= 0
__func__= "fs_list_iter_next"
#3 0x00007f9e5dc4f8ddin mailbox_list_iter_next_call(ctx=0x55d248df6898)
at list/mailbox-list-iter.c:1009
info= <optimized out>
set= 0x148d86ee0
ret= <optimized out>
#4 mailbox_list_iter_next(ctx=0x55d248df6898) at
list/mailbox-list-iter.c:1098
_data_stack_cur_id= 5
info= <optimized out>
#5 0x00007f9e5dc50899in
mailbox_list_ns_iter_try_next(_ctx=0x55d248df6488, info_r=<synthetic
pointer>) at list/mailbox-list-iter.c:616
ctx= 0x55d248df6488
ns= <optimized out>
info= <optimized out>
suffix= <optimized out>
has_children= <optimized out>
__func__= <optimized out>
#6 mailbox_list_ns_iter_next(_ctx=0x55d248df6488) at
list/mailbox-list-iter.c:678
info= 0x0
#7 0x00007f9e5dc4f8ddin mailbox_list_iter_next_call(ctx=0x55d248df6488)
at list/mailbox-list-iter.c:1009
info= <optimized out>
set= 0x2fffffffd0
ret= <optimized out>
#8 mailbox_list_iter_next(ctx=0x55d248df6488) at
list/mailbox-list-iter.c:1098
_data_stack_cur_id= 4
info= <optimized out>
#9 0x000055d20bc81a20in cmd_force_resync_run(_ctx=0x55d248db57a8,
user=0x55d248dc6318) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:369
ctx= 0x55d248db57a8
iter_flags= (MAILBOX_LIST_ITER_RAW_LIST|
MAILBOX_LIST_ITER_NO_AUTO_BOXES| MAILBOX_LIST_ITER_STAR_WITHIN_NS|
MAILBOX_LIST_ITER_RETURN_NO_FLAGS| MAILBOX_LIST_ITER_FORCE_RESYNC)
ns_mask= (MAIL_NAMESPACE_TYPE_PRIVATE| MAIL_NAMESPACE_TYPE_SHARED|
MAIL_NAMESPACE_TYPE_PUBLIC)
iter= 0x55d248df6488
info= <optimized out>
ret= <optimized out>
patterns= {0x55d248db5300"test/", 0x0}
#10 0x000055d20bc856c2in
doveadm_mail_next_user(ctx=ctx@entry=0x55d248db57a8,
error_r=error_r@entry=0x7ffdbc3f0778) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:506
_data_stack_cur_id= 3
cctx= 0x55d248db39b8
input= {event_parent= 0x0, service= 0x55d20bcbd810"doveadm", protocol=
0x0, username= 0x55d248db81a0"akos(a)szots.dev", session_id= 0x0,
session_id_prefix= 0x0, session_create_
time= 0, local_ip= {family= 0, u= {ip6= {__in6_u= {__u6_addr8= '\000'
<repeats 15 times>, __u6_addr16= {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32=
{0, 0, 0, 0}}}, ip4= {s_addr= 0}}, sco
pe_id= 0}, remote_ip= {family= 0, u= {ip6= {__in6_u= {__u6_addr8= '\000'
<repeats 15 times>, __u6_addr16= {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32=
{0, 0, 0, 0}}}, ip4= {s_addr= 0}},
scope_id= 0}, local_port= 0, remote_port= 0, local_name= 0x0,
userdb_fields= 0x0, code_override_fields= 0x0, forward_fields= 0x0,
set_instance= 0x0, flags_override_add= 0, flags_over
ride_remove= 0, no_userdb_lookup= false, debug= false,
end_client_tls_secured= false, autocreated= false, no_free_init_failure=
false}
error= 0x0
ip= <optimized out>
ret= <optimized out>
dropping_privs= true
cur_uid= 0
cur_cwd= 0x55d248d86df8"/"
cur_ctx= 0x55d248dc2c80
reason= 0x55d248df57f0
__func__= "doveadm_mail_next_user"
#11 0x000055d20bc87525in doveadm_mail_all_users(ctx=0x55d248db57a8,
wildcard_user=0x55d20bcc015d "*") at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:584
_data_stack_cur_id= 2
cctx= 0x55d248db39b8
user_idx= 0
ip= <optimized out>
user= 0x55d248db81a0"akos(a)szots.dev"
error= 0x55d248d8e7d8"\t\350\330H\322U"
ret= 1
#12 doveadm_mail_cmd_exec(ctx=0x55d248db57a8,
wildcard_user=0x55d20bcc015d "*") at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:721
cctx= <optimized out>
cli= <optimized out>
ret= <optimized out>
error= 0x55d248d8e7d8"\t\350\330H\322U"
#13 doveadm_cmd_ver2_to_mail_cmd_wrapper(cctx=<optimized out>) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:1039
mctx= 0x55d248db57a8
mail_cmd= {alloc= 0x55d20bc803f0<cmd_force_resync_alloc>, name=
0x55d20bcbe92d"force-resync", usage_args= 0x55d20bcc5008"[-u <user>|-A]
[-S <socket_path>] [-f] <mailbox mask>"}
wildcard_user= 0x55d20bcc015d"*"
#14 0x000055d20bc9ba77in doveadm_cmdline_run(argc=<optimized out>,
argv=0x55d248d8e7c8, cctx=cctx@entry=0x55d248db39b8) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-cmd-parse.c:451
prefix= <optimized out>
pargv= {arr= {buffer= 0x55d248db4388, element_size= 112}, v=
0x55d248db4388, v_modifiable= 0x55d248db4388}
pargc= 8
pool= 0x55d248db4350
ptr_count= <optimized out>
ptr= <optimized out>
ptr_end= <optimized out>
ptr_last_non_kv= <optimized out>
#15 0x000055d20bc9bc2cin
doveadm_cmdline_try_run(cmd_name=cmd_name@entry=0x55d248d8e7f9
"force-resync", argc=<optimized out>, argv=<optimized out>,
cctx=cctx@entry=0x55d248db39b8) at /usr/s
rc/debug/dovecot-2.4.1-4/src/doveadm/doveadm-cmd.c:160
cmd= <optimized out>
#16 0x000055d20bc74fdein main(argc=<optimized out>, argv=<optimized
out>) at /usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm.c:386
service_flags= <optimized out>
cmd_name= 0x55d248d8e7f9"force-resync"
i= <optimized out>
quick_init= false
c= <optimized out>
longopts= {{name= 0x7f9e5dadb7a8"help", has_arg= 0, flag= 0x0, val= 0},
{name= 0x0, has_arg= 0, flag= 0x0, val= 0}}
help_requested= <optimized out>
longopt= 0x0
cctx= 0x55d248db39b8
Ákos
Hi All,
In Dovecot 2.4.1 if I start doveadm force-resync with a non-existent
mailbox that ends in a slash, the command crashes:
gdb -ex run --args doveadm force-resync -A test/
Thread 1 (Thread 0x7f9e5cc4a980 (LWP 442) "doveadm"):
#0 fs_list_next_root (ctx=ctx@entry=0x55d248df6898) at
list/mailbox-list-fs-iter.c:507
roots = <error reading variable roots (Cannot access memory at
address 0x0)>
count = <error reading variable count (Cannot access memory at
address 0x8)>
__func__ = "fs_list_next_root"
#1 0x00007f9e5dc417c2 in fs_list_iter_reset (ctx=0x55d248df6898) at
list/mailbox-list-fs-iter.c:830
__func__ = <optimized out>
#2 fs_list_iter_next (_ctx=0x55d248df6898) at
list/mailbox-list-fs-iter.c:912
ctx = <optimized out>
ret = 0
__func__ = "fs_list_iter_next"
#3 0x00007f9e5dc4f8dd in mailbox_list_iter_next_call (ctx=0x55d248df6898)
at list/mailbox-list-iter.c:1009
info = <optimized out>
set = 0x148d86ee0
ret = <optimized out>
#4 mailbox_list_iter_next (ctx=0x55d248df6898) at
list/mailbox-list-iter.c:1098
_data_stack_cur_id = 5
info = <optimized out>
#5 0x00007f9e5dc50899 in mailbox_list_ns_iter_try_next
(_ctx=0x55d248df6488, info_r=<synthetic pointer>) at
list/mailbox-list-iter.c:616
ctx = 0x55d248df6488
ns = <optimized out>
info = <optimized out>
suffix = <optimized out>
has_children = <optimized out>
__func__ = <optimized out>
#6 mailbox_list_ns_iter_next (_ctx=0x55d248df6488) at
list/mailbox-list-iter.c:678
info = 0x0
#7 0x00007f9e5dc4f8dd in mailbox_list_iter_next_call (ctx=0x55d248df6488)
at list/mailbox-list-iter.c:1009
info = <optimized out>
set = 0x2fffffffd0
ret = <optimized out>
#8 mailbox_list_iter_next (ctx=0x55d248df6488) at
list/mailbox-list-iter.c:1098
_data_stack_cur_id = 4
info = <optimized out>
#9 0x000055d20bc81a20 in cmd_force_resync_run (_ctx=0x55d248db57a8,
user=0x55d248dc6318) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:369
ctx = 0x55d248db57a8
iter_flags = (MAILBOX_LIST_ITER_RAW_LIST |
MAILBOX_LIST_ITER_NO_AUTO_BOXES | MAILBOX_LIST_ITER_STAR_WITHIN_NS |
MAILBOX_LIST_ITER_RETURN_NO_FLAGS | MAILBOX_LIST_ITER_FORCE_RESYNC)
ns_mask = (MAIL_NAMESPACE_TYPE_PRIVATE | MAIL_NAMESPACE_TYPE_SHARED
| MAIL_NAMESPACE_TYPE_PUBLIC)
iter = 0x55d248df6488
info = <optimized out>
ret = <optimized out>
patterns = {0x55d248db5300 "test/", 0x0}
#10 0x000055d20bc856c2 in doveadm_mail_next_user
(ctx=ctx@entry=0x55d248db57a8, error_r=error_r@entry=0x7ffdbc3f0778) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:506
_data_stack_cur_id = 3
cctx = 0x55d248db39b8
input = {event_parent = 0x0, service = 0x55d20bcbd810 "doveadm",
protocol = 0x0, username = 0x55d248db81a0 [1]"akos(a)szots.dev", session_id
= 0x0, session_id_prefix = 0x0, session_create_
time = 0, local_ip = {family = 0, u = {ip6 = {__in6_u = {__u6_addr8 =
'\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
__u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}, sco
pe_id = 0}, remote_ip = {family = 0, u = {ip6 = {__in6_u = {__u6_addr8 =
'\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
__u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}},
scope_id = 0}, local_port = 0, remote_port = 0, local_name = 0x0,
userdb_fields = 0x0, code_override_fields = 0x0, forward_fields = 0x0,
set_instance = 0x0, flags_override_add = 0, flags_over
ride_remove = 0, no_userdb_lookup = false, debug = false,
end_client_tls_secured = false, autocreated = false, no_free_init_failure
= false}
error = 0x0
ip = <optimized out>
ret = <optimized out>
dropping_privs = true
cur_uid = 0
cur_cwd = 0x55d248d86df8 "/"
cur_ctx = 0x55d248dc2c80
reason = 0x55d248df57f0
__func__ = "doveadm_mail_next_user"
#11 0x000055d20bc87525 in doveadm_mail_all_users (ctx=0x55d248db57a8,
wildcard_user=0x55d20bcc015d "*") at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:584
_data_stack_cur_id = 2
cctx = 0x55d248db39b8
user_idx = 0
ip = <optimized out>
user = 0x55d248db81a0 [2]"akos(a)szots.dev"
error = 0x55d248d8e7d8 "\t\350\330H\322U"
ret = 1
#12 doveadm_mail_cmd_exec (ctx=0x55d248db57a8,
wildcard_user=0x55d20bcc015d "*") at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:721
cctx = <optimized out>
cli = <optimized out>
ret = <optimized out>
error = 0x55d248d8e7d8 "\t\350\330H\322U"
#13 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-mail.c:1039
mctx = 0x55d248db57a8
mail_cmd = {alloc = 0x55d20bc803f0 <cmd_force_resync_alloc>, name =
0x55d20bcbe92d "force-resync", usage_args = 0x55d20bcc5008 "[-u <user>|-A]
[-S <socket_path>] [-f] <mailbox mask>"}
wildcard_user = 0x55d20bcc015d "*"
#14 0x000055d20bc9ba77 in doveadm_cmdline_run (argc=<optimized out>,
argv=0x55d248d8e7c8, cctx=cctx@entry=0x55d248db39b8) at
/usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm-cmd-parse.c:451
prefix = <optimized out>
pargv = {arr = {buffer = 0x55d248db4388, element_size = 112}, v =
0x55d248db4388, v_modifiable = 0x55d248db4388}
pargc = 8
pool = 0x55d248db4350
ptr_count = <optimized out>
ptr = <optimized out>
ptr_end = <optimized out>
ptr_last_non_kv = <optimized out>
#15 0x000055d20bc9bc2c in doveadm_cmdline_try_run
(cmd_name=cmd_name@entry=0x55d248d8e7f9 "force-resync", argc=<optimized
out>, argv=<optimized out>, cctx=cctx@entry=0x55d248db39b8) at /usr/s
rc/debug/dovecot-2.4.1-4/src/doveadm/doveadm-cmd.c:160
cmd = <optimized out>
#16 0x000055d20bc74fde in main (argc=<optimized out>, argv=<optimized
out>) at /usr/src/debug/dovecot-2.4.1-4/src/doveadm/doveadm.c:386
service_flags = <optimized out>
cmd_name = 0x55d248d8e7f9 "force-resync"
i = <optimized out>
quick_init = false
c = <optimized out>
longopts = {{name = 0x7f9e5dadb7a8 "help", has_arg = 0, flag = 0x0,
val = 0}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
help_requested = <optimized out>
longopt = 0x0
cctx = 0x55d248db39b8
Akos
References
Visible links
1. mailto:akos@szots.dev
2. mailto:akos@szots.dev