Hello Dominik Röttsches, the missing debug symbols for libmariadbclient.so.18 might hide in libmariadb3-dbgsym.
You may also want to install these packages too: dovecot-core-dbgsym dovecot-mysql-dbgsym They should be available in a different debug symbol repository described in [1]. I had a look at the stack without debug information and added the line information where I would expect them. Kind regards, Bernhard [1] https://wiki.debian.org/HowToGetABacktrace#Installing_the_debugging_symbols #4 0x00007f59d8d6791d in _int_free (av=0x7f59d8ea1c40 <main_arena>, p=0x564222bd44e0, have_lock=<optimized out>) at malloc.c:4193 #5 0x00007f59d8c1ea8e in mysql_close (): libmariadbclient.so.18: : file ./libmariadb/libmariadb/mariadb_lib.c, line 1921. #6 0x00007f59d91801fe in ?? (): libdriver_mysql.so: driver_mysql_deinit_v: file driver-mysql.c, line 314. #7 0x0000564220be2a14 in ?? (): sql_deinit: file sql-api.c, line 122. #8 0x0000564220bd88f1 in db_sql_unref (): file db-sql.c, line 134. #9 0x0000564220bcd92e in passdb_deinit (): file passdb.c, line 266. #10 0x0000564220bb7099 in auths_deinit (): file auth.c, line 333. #11 0x0000564220bb5e0c in main (): file main.c, line 271. (gdb) list ./libmariadb/libmariadb/mariadb_lib.c:1911,1935 1911 void STDCALL 1912 mysql_close(MYSQL *mysql) 1913 { 1914 if (mysql) /* Some simple safety */ 1915 { 1916 if (mysql->extension && mysql->extension->conn_hdlr) 1917 { 1918 MA_CONNECTION_HANDLER *p= mysql->extension->conn_hdlr; 1919 if (p->plugin->close) 1920 p->plugin->close(mysql); 1921 free(p); 1922 /* Fix for CONC-294: Since we already called plugin->close function 1923 we need to prevent that mysql_close_slow_part (which sends COM_QUIT 1924 to the server) will be handled by plugin again. */ 1925 mysql->extension->conn_hdlr= NULL; 1926 } 1927
# Unstable amd64 qemu VM apt update apt dist-upgrade reboot apt install systemd-coredump psmisc mc gdb dovecot-mysql dovecot-core-dbgsym dovecot-mysql-dbgsym libmariadb3-dbgsym apt install dpkg-dev devscripts mkdir source/dovecot/orig -p cd source/dovecot/orig apt source dovecot cd mkdir source/libmariadb3/orig -p cd source/libmariadb3/orig apt source libmariadb3 cd cp ./conf.d/auth-sql.conf.ext ./conf.d/auth-sql.conf -a LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18:/usr/lib/dovecot/libdovecot-sql.so:/usr/lib/dovecot/modules/auth/libdriver_mysql.so \ gdb -q \ -ex 'set pagination off' \ -ex 'set width 0' \ -ex 'directory /home/benutzer/source/dovecot/orig/dovecot-2.3.4/src/auth' \ -ex 'directory /home/benutzer/source/libmariadb3/orig/mariadb-10.3-10.3.11' \ -ex 'directory /home/benutzer/source/dovecot/orig/dovecot-2.3.4/src/lib-sql' \ -ex 'b main' \ -ex 'run' \ --args /usr/lib/dovecot/auth disassemble db_sql_unref disassemble db_sql_unref,db_sql_unref+92 disassemble /m db_sql_unref,db_sql_unref+92 list db_sql_unref b *0x000055555558a8f1 #1 0x00007f59d8d08535 in __GI_abort () at abort.c:79 #2 0x00007f59d8d5f718 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f59d8e6a29a "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007f59d8d65e3a in malloc_printerr (str=str@entry=0x7f59d8e6bf60 "free(): double free detected in tcache 2") at malloc.c:5382 #4 0x00007f59d8d6791d in _int_free (av=0x7f59d8ea1c40 <main_arena>, p=0x564222bd44e0, have_lock=<optimized out>) at malloc.c:4193 #5 0x00007f59d8c1ea8e in mysql_close () from target:/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 #6 0x00007f59d91801fe in ?? () from target:/usr/lib/dovecot/modules/auth/libdriver_mysql.so #7 0x0000564220be2a14 in ?? () #8 0x0000564220bd88f1 in db_sql_unref () #9 0x0000564220bcd92e in passdb_deinit () #10 0x0000564220bb7099 in auths_deinit () #11 0x0000564220bb5e0c in main () #1 0x00007f59d8d08535 in __GI_abort () at abort.c:79 #2 0x00007f59d8d5f718 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f59d8e6a29a "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007f59d8d65e3a in malloc_printerr (str=str@entry=0x7f59d8e6bf60 "free(): double free detected in tcache 2") at malloc.c:5382 #4 0x00007f59d8d6791d in _int_free (av=0x7f59d8ea1c40 <main_arena>, p=0x564222bd44e0, have_lock=<optimized out>) at malloc.c:4193 #5 0x00007f59d8c1ea8e in mysql_close () from target:/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 1921 free(p); 0x00007ffff7f9da86 <mysql_close+54>: mov %r12,%rdi 0x00007ffff7f9da89 <mysql_close+57>: callq 0x7ffff7f91720 <free@plt> 1922 /* Fix for CONC-294: Since we already called plugin->close function 1923 we need to prevent that mysql_close_slow_part (which sends COM_QUIT 1924 to the server) will be handled by plugin again. */ 1925 mysql->extension->conn_hdlr= NULL; 0x00007ffff7f9da8e <mysql_close+62>: mov 0x4f0(%rbx),%rax 0x7ffff7f9da89: file ./libmariadb/libmariadb/mariadb_lib.c, line 1921. (gdb) list ./libmariadb/libmariadb/mariadb_lib.c:1911,1935 1911 void STDCALL 1912 mysql_close(MYSQL *mysql) 1913 { 1914 if (mysql) /* Some simple safety */ 1915 { 1916 if (mysql->extension && mysql->extension->conn_hdlr) 1917 { 1918 MA_CONNECTION_HANDLER *p= mysql->extension->conn_hdlr; 1919 if (p->plugin->close) 1920 p->plugin->close(mysql); 1921 free(p); 1922 /* Fix for CONC-294: Since we already called plugin->close function 1923 we need to prevent that mysql_close_slow_part (which sends COM_QUIT 1924 to the server) will be handled by plugin again. */ 1925 mysql->extension->conn_hdlr= NULL; 1926 } 1927 1928 if (mysql->methods) 1929 mysql->methods->db_close(mysql); 1930 1931 /* reset the connection in all active statements */ 1932 ma_invalidate_stmts(mysql, "mysql_close()"); 1933 1934 mysql_close_memory(mysql); 1935 mysql_close_options(mysql); #6 0x00007f59d91801fe in ?? () from target:/usr/lib/dovecot/modules/auth/libdriver_mysql.so 314 mysql_close(db->mysql); 0x00007ffff7f6a1f2 <driver_mysql_deinit_v+18>: mov 0x1e0(%rbx),%rdi 0x00007ffff7f6a1f9 <driver_mysql_deinit_v+25>: callq 0x7ffff7f69340 <mysql_close@plt> 315 316 sql_connection_log_finished(_db); 0x00007ffff7f6a1fe <driver_mysql_deinit_v+30>: mov %rbx,%rdi 0x7ffff7f6a1f9: file driver-mysql.c, line 314. #7 0x0000564220be2a14 in ?? () 122 db->v.deinit(db); 0x0000555555593517 <sql_deinit+23>: mov 0x20(%rbx),%rax 0x000055555559351b <sql_deinit+27>: mov %rbx,%rdi 0x000055555559351e <sql_deinit+30>: pop %rbx 0x000055555559351f <sql_deinit+31>: jmpq 0x5555555684a6 <__x86_indirect_thunk_rax> 0x0000555555593524: data16 nopw %cs:0x0(%rax,%rax,1) ? 0x55555559351f: file sql-api.c, line 122. #8 0x0000564220bd88f1 in db_sql_unref () 0x000055555558a8ec <db_sql_unref+60>: callq 0x555555593500 <sql_deinit> 0x000055555558a8f1 <db_sql_unref+65>: mov 0x8(%rbx),%rax (gdb) list db_sql_unref 122 void db_sql_unref(struct db_sql_connection **_conn) 123 { 124 struct db_sql_connection *conn = *_conn; 125 126 /* abort all pending auth requests before setting conn to NULL, 127 so that callbacks can still access it */ 128 sql_disconnect(conn->db); 129 130 *_conn = NULL; 131 if (--conn->refcount > 0) 132 return; 133 134 sql_deinit(&conn->db); 135 pool_unref(&conn->pool); 136 } 0x55555558a8ec: file db-sql.c, line 134. #9 0x0000564220bcd92e in passdb_deinit () 266 passdb->iface.deinit(passdb); 0x000055555557f926 <passdb_deinit+134>: mov %rbx,%rdi 0x000055555557f929 <passdb_deinit+137>: callq 0x5555555684a6 <__x86_indirect_thunk_rax> 267 268 /* make sure passdb isn't accessed again */ 269 passdb->iface = passdb_iface_deinit; 0x000055555557f92e <passdb_deinit+142>: pxor %xmm0,%xmm0 0x55555557f929: file passdb.c, line 266. #10 0x0000564220bb7099 in auths_deinit () 333 passdb_deinit(passdb->passdb); 0x0000555555569090 <auths_deinit+80>: mov 0x10(%rbx),%rdi 0x0000555555569094 <auths_deinit+84>: callq 0x55555557f8a0 <passdb_deinit> 0x0000555555569099 <auths_deinit+89>: mov (%rbx),%rbx 0x555555569094: file auth.c, line 333. #11 0x0000564220bb5e0c in main () 270 /* deinit passdbs and userdbs. it aborts any pending async requests. */ 271 auths_deinit(); 0x0000555555567e07 <main+999>: callq 0x555555569040 <auths_deinit> 272 /* flush pending requests */ 273 auth_request_handler_deinit(); 0x0000555555567e0c <main+1004>: callq 0x555555574e40 <auth_request_handler_deinit> 0x555555567e07: file main.c, line 271. #4 0x00007f59d8d6791d in _int_free (av=0x7f59d8ea1c40 <main_arena>, p=0x564222bd44e0, have_lock=<optimized out>) at malloc.c:4193 #5 0x00007f59d8c1ea8e in mysql_close (): libmariadbclient.so.18: : file ./libmariadb/libmariadb/mariadb_lib.c, line 1921. #6 0x00007f59d91801fe in ?? (): libdriver_mysql.so: driver_mysql_deinit_v: file driver-mysql.c, line 314. #7 0x0000564220be2a14 in ?? (): sql_deinit: file sql-api.c, line 122. #8 0x0000564220bd88f1 in db_sql_unref (): file db-sql.c, line 134. #9 0x0000564220bcd92e in passdb_deinit (): file passdb.c, line 266. #10 0x0000564220bb7099 in auths_deinit (): file auth.c, line 333. #11 0x0000564220bb5e0c in main (): file main.c, line 271.