Hi,
I know that a lot of work has been done regarding doveadm server, but I'm still experiencing easily reproducible segfault crashes of doveadm-server with 2.1.16 when running the following command in a 4 node director/mailbox cluster:
/usr/bin/doveadm -c /etc/dovecot-director/dovecot-director.conf -D purge -A
The dovecot-error.log shows the following errors (addresses anonymized):
Apr 29 15:45:14 10.129.3.233 dovecot: doveadm: Error: purge: invalid option -- '' Apr 29 15:45:14 10.129.3.233 dovecot: doveadm(x.xxxxxx@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.233 dovecot: doveadm: Error: purge: invalid option -- '�' Apr 29 15:45:14 10.129.3.233 dovecot: doveadm(x.xxxxxx@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.249 dovecot: doveadm: Error: purge: invalid option -- '�' Apr 29 15:45:14 10.129.3.249 dovecot: doveadm(x.xxxxxx@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.249 dovecot: doveadm: Error: purge: invalid option -- 'r' Apr 29 15:45:14 10.129.3.249 dovecot: doveadm(x.xxxxxx@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- 'e' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xxxxx@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- 'g' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xxxxx@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- 'e' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xxxxx@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- '-' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xxxxx@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.249 dovecot: doveadm: Error: purge: invalid option -- '' Apr 29 15:45:14 10.129.3.249 dovecot: doveadm(xxxxxxxxxx@xxxxxxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xxxxx@xxxxxx.xx): Fatal: master: service(doveadm): child 6316 killed with signal 11 (core dumped)
There seems to something wrong with the doveadm command parser:
# gdb /usr/lib/dovecot/doveadm-server /var/tmp/6316 (gdb) bt full #0 0x00007f52f0dc7cca in ?? () from /lib/libc.so.6 No symbol table info available. #1 0x00007f52f0dc8dab in ?? () from /lib/libc.so.6 No symbol table info available. #2 0x00007f52f0dc8e18 in getopt () from /lib/libc.so.6 No symbol table info available. #3 0x00000000004138ce in doveadm_mail_cmd_server_parse (conn=0xe09ad0) at client-connection.c:69 getopt_args = 0xdfa6b8 "AS:u:" c = <value optimized out> cmd = 0xe062c8 add_username_header = false #4 client_handle_command (conn=0xe09ad0) at client-connection.c:223 ctx = 0xe0dae0 flags = <value optimized out> cmd_name = <value optimized out> input = {module = 0x0, service = 0x4210f0 "doveadm", username = 0xdfa59a "xxxxxxx@xxxxxxxx.xx", session_id = 0x0, 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}}}, 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}}}, local_port = 0, remote_port = 0, userdb_fields = 0x0, flags_override_add = 0, flags_override_remove = 0, no_userdb_lookup = 0} argc = <value optimized out> #5 client_connection_input (conn=0xe09ad0) at client-connection.c:326 args = <value optimized out> _data_stack_cur_id = 3 line = <value optimized out> ok = <value optimized out> #6 0x00007f52f10e6166 in io_loop_call_io (io=0xe097e0) at ioloop.c:379 ioloop = 0xe026a0 t_id = 2 #7 0x00007f52f10e71ef in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:213 ctx = 0xe054f0 event = 0xe05560 list = 0xe09950 io = 0xdfa5c8 tv = {tv_sec = 2147483, tv_usec = 0} msecs = <value optimized out> ret = <value optimized out> i = 0 call = false #8 0x00007f52f10e6108 in io_loop_run (ioloop=0xe026a0) at ioloop.c:398 No locals. #9 0x00007f52f10d15a3 in master_service_run (service=0xe02550, callback=0) at master-service.c:544 No locals. #10 0x0000000000414111 in main (argc=1, argv=0xe02370) at main.c:90 set_roots = {0x422780, 0x0} error = 0x0