With glibc 2.33 (in Ubuntu already) this fails. The upstream version would work on more common architectures.
Full string of the backtrace is:
(gdb) printf "%s\n", str_c(bt)
/build/dovecot-bRiyOq/dovecot-2.3.13+dfsg1/src/lib/test-lib(+0x83729) [0x5555555d7729]
-> /build/dovecot-bRiyOq/dovecot-2.3.13+dfsg1/src/lib/test-lib(test_backtrace+0x90) [0x55555558a9e0]
-> /build/dovecot-bRiyOq/dovecot-2.3.13+dfsg1/src/lib/test-lib(+0x7e74e) [0x5555555d274e]
-> /build/dovecot-bRiyOq/dovecot-2.3.13+dfsg1/src/lib/test-lib(test_run_named_with_fatals+0x7d) [0x5555555d530d]
-> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xd5) [0x7ffff7dfa565]
-> /build/dovecot-bRiyOq/dovecot-2.3.13+dfsg1/src/lib/test-lib(_start+0x2e) [0x5555555852ee]
It comes down to glibc 2.33 changing behavior in regard to dovecots
backtrace_append_libc of src/lib/backtrace-string.c. We can't report this
upstream as it only affects the Debian Delta.
Comparing what would be in the backtrace on various architectures and with odl and new glibc it seems "test_backtrace" is more reliable. Hence let us adapt the fix for that.