slusarz / dovecot-fts-flatcurve

Dovecot FTS Flatcurve plugin (Xapian)
https://slusarz.github.io/dovecot-fts-flatcurve/
GNU Lesser General Public License v2.1
38 stars 8 forks source link

doveadm segfaults #23

Closed internethering closed 2 years ago

internethering commented 2 years ago

Hello, I'm, running dovecot 2.3.18 unter a gentoo machine and installed dovecot-fts-flatcurve 0.2.0.

alpha.test rhering # doveadm fts-flatcurve check -A INBOX
doveadm(1188705): Panic: file doveadm-print.c: line 146: unreached
doveadm(1188705): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7f4237c4260d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7f4237c4271e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7f4237c4f5a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7f4237c4f5e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7f4237ba446b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x54807) [0x7f4237ba4807] -> doveadm(+0x21262) [0x56378fc29262] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x6a4) [0x56378fc3ced4] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x56378fc4cfaf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x56378fc4d02a] -> doveadm(main+0x1d4) [0x56378fc2c8b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7f42378867fd] -> doveadm(_start+0x2a) [0x56378fc2cb2a]
Abgebrochen (Speicherabzug geschrieben)
alpha.test rhering # coredumpctl gdb
           PID: 1188705 (doveadm)
           UID: 0 (root)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Wed 2022-02-16 14:05:43 CET (2s ago)
  Command Line: doveadm fts-flatcurve check -A INBOX
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-29.scope
          Unit: session-29.scope
         Slice: user-1000.slice
       Session: 29
     Owner UID: 1000 (rhering)
       Boot ID: 29fb1366af184227a36ef9949418b94d
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.0.29fb1366af184227a36ef9949418b94d.1188705.1645016743000000.zst (present)
     Disk Size: 247.0K
       Message: Process 1188705 (doveadm) of user 0 dumped core.

                Found module linux-vdso.so.1 with build-id: fe5c504f30a69e6b50c2193d4271e0f461e16f18
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 1188705:
                #0  0x00007f423789b5f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007f4237885536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007f4237ba47ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007f4237c4f5e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007f4237ba446b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007f4237ba4807 i_unreached (libdovecot.so.0 + 0x54807)
                #6  0x000056378fc29262 doveadm_print_sticky (doveadm + 0x21262)
                #7  0x000056378fc3ced4 doveadm_mail_all_users (doveadm + 0x34ed4)
                #8  0x000056378fc4cfaf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #9  0x000056378fc4d02a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #10 0x000056378fc2c8b4 main (doveadm + 0x248b4)
                #11 0x00007f42378867fd __libc_start_main (libc.so.6 + 0x237fd)
                #12 0x000056378fc2cb2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 1188705]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve check -A INBOX'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007f4237885536 in __GI_abort () at abort.c:79
#2  0x00007f4237ba47ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007f4237c4f5e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007f4237ba446b in i_panic (format=format@entry=0x7f4237cb023d "file %s: line %d: unreached") at failures.c:524
#6  0x00007f4237ba4807 in i_unreached (source_filename=source_filename@entry=0x56378fc7c647 "doveadm-print.c", source_linenum=source_linenum@entry=146) at failures.c:990
#7  0x000056378fc29262 in doveadm_print_sticky (key=key@entry=0x56378fc7c8a3 "username", value=0x56379034eac0 "files_frommail@ck-energy.com") at doveadm-print.c:146
#8  0x000056378fc3ced4 in doveadm_mail_all_users (wildcard_user=0x0, ctx=0x563790342368) at doveadm-mail.c:533
#9  doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x563790342368) at doveadm-mail.c:670
#10 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#11 0x000056378fc4cfaf in doveadm_cmd_run_ver2 (argc=3, argv=0x563790310a20, cctx=<optimized out>) at doveadm-cmd.c:465
#12 0x000056378fc4d02a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x563790310a48 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7fffa4e89430) at doveadm-cmd.c:363
#13 0x000056378fc2c8b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361

another segfault:

alpha.test rhering # doveadm fts-flatcurve check -u local@domain.tld "?"
doveadm(local@domain.tld): Panic: file fts-backend-flatcurve.c: line 120: unreached
doveadm(local@domain.tld): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7fd7767c760d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7fd7767c771e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7fd7767d45a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7fd7767d45e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7fd77672946b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x54807) [0x7fd776729807] -> /usr/lib64/dovecot/lib21_fts_flatcurve_plugin.so(+0x7de2) [0x7fd773dfede2] -> /usr/lib64/dovecot/doveadm/lib21_doveadm_fts_flatcurve_plugin.so(+0x2817) [0x7fd773bab817] -> doveadm(+0x33a5d) [0x560e90ec1a5d] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x2bc) [0x560e90ec2aec] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x560e90ed2faf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x560e90ed302a] -> doveadm(main+0x1d4) [0x560e90eb28b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7fd77640b7fd] -> doveadm(_start+0x2a) [0x560e90eb2b2a]
Abgebrochen (Speicherabzug geschrieben)
alpha.test rhering # coredumpctl gdb
           PID: 1188745 (doveadm)
           UID: 65502 (vmail)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Wed 2022-02-16 14:06:31 CET (2min 36s ago)
  Command Line: doveadm fts-flatcurve check -u local@domain.tld $'?'
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-29.scope
          Unit: session-29.scope
         Slice: user-1000.slice
       Session: 29
     Owner UID: 1000 (rhering)
       Boot ID: 29fb1366af184227a36ef9949418b94d
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.65502.29fb1366af184227a36ef9949418b94d.1188745.1645016791000000.zst (present)
     Disk Size: 245.3K
       Message: Process 1188745 (doveadm) of user 65502 dumped core.

                Found module linux-vdso.so.1 with build-id: fe5c504f30a69e6b50c2193d4271e0f461e16f18
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 1188745:
                #0  0x00007fd7764205f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007fd77640a536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007fd7767297ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007fd7767d45e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007fd77672946b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007fd776729807 i_unreached (libdovecot.so.0 + 0x54807)
                #6  0x00007fd773dfede2 fts_backend_flatcurve_set_mailbox (lib21_fts_flatcurve_plugin.so + 0x7de2)
                #7  0x00007fd773bab817 cmd_fts_flatcurve_mailbox_run_do (lib21_doveadm_fts_flatcurve_plugin.so + 0x2817)
                #8  0x0000560e90ec1a5d doveadm_mail_next_user (doveadm + 0x33a5d)
                #9  0x0000560e90ec2aec doveadm_mail_cmd_exec (doveadm + 0x34aec)
                #10 0x0000560e90ed2faf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #11 0x0000560e90ed302a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #12 0x0000560e90eb28b4 main (doveadm + 0x248b4)
                #13 0x00007fd77640b7fd __libc_start_main (libc.so.6 + 0x237fd)
                #14 0x0000560e90eb2b2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 1188745]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve check -u local@domain.tld ?'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007fd77640a536 in __GI_abort () at abort.c:79
#2  0x00007fd7767297ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007fd7767d45e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007fd77672946b in i_panic (format=format@entry=0x7fd77683523d "file %s: line %d: unreached") at failures.c:524
#6  0x00007fd776729807 in i_unreached (source_filename=source_filename@entry=0x7fd773e081ad "fts-backend-flatcurve.c", source_linenum=source_linenum@entry=120) at failures.c:990
#7  0x00007fd773dfede2 in fts_backend_flatcurve_set_mailbox (backend=backend@entry=0x560e91a4b6d0, box=0x560e91a5b328) at fts-backend-flatcurve.c:120
#8  0x00007fd773bab817 in cmd_fts_flatcurve_mailbox_run_do (ctx=0x560e91a11388, user=<optimized out>, backend=0x560e91a4b6d0) at doveadm-fts-flatcurve.c:145
#9  cmd_fts_flatcurve_mailbox_run (_ctx=0x560e91a11388, user=<optimized out>) at doveadm-fts-flatcurve.c:231
#10 0x0000560e90ec1a5d in doveadm_mail_next_user (ctx=0x560e91a11388, error_r=0x7ffff796cc98) at doveadm-mail.c:464
#11 0x0000560e90ec2aec in doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x560e91a11388) at doveadm-mail.c:659
#12 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#13 0x0000560e90ed2faf in doveadm_cmd_run_ver2 (argc=4, argv=0x560e919dfa20, cctx=<optimized out>) at doveadm-cmd.c:465
#14 0x0000560e90ed302a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x560e919dfa50 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffff796cdf0) at doveadm-cmd.c:363
#15 0x0000560e90eb28b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
slusarz commented 2 years ago
alpha.test rhering # doveadm fts-flatcurve check -A INBOX
doveadm(1188705): Panic: file doveadm-print.c: line 146: unreached

This seems to be an issue with core doveadm and the -A flag - it is failing when it is trying to print a header of the username of the current user. This doesn't seem to have anything to do with flatcurve code.

alpha.test rhering # doveadm fts-flatcurve check -u local@domain.tld "?"
doveadm(local@domain.tld): Panic: file fts-backend-flatcurve.c: line 120: unreached

I can't reproduce this.

The code is assert panicking in a place that indicates that the index path for the user doesn't exist. Do you have some kind of strange read-only setup where a user does not have indexes? If so, FTS won't work for obvious reasons.

That being said, we can do a bit more of a direct check on the index path which will output an actual assertion rather than an obscure catch-all panic. So I'll go ahead and add that.

internethering commented 2 years ago

Ok, I tested again with your commit:

 # doveadm fts-flatcurve check -A INBOX
doveadm(local@domain.tld): Panic: file mail-storage.c: line 2933 (mailbox_get_index_path): assertion failed: (box->_index_path != NULL)
doveadm(local@domain.tld): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7f7b99d5f60d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7f7b99d5f71e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7f7b99d6c5a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7f7b99d6c5e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7f7b99cc146b] -> /usr/lib64/dovecot/libdovecot-storage.so.0(+0x40311) [0x7f7b99e7b311] -> /usr/lib64/dovecot/lib21_fts_flatcurve_plugin.so(fts_backend_flatcurve_set_mailbox+0x49) [0x7f7b97398dd9] -> /usr/lib64/dovecot/doveadm/lib21_doveadm_fts_flatcurve_plugin.so(+0x26d7) [0x7f7b971436d7] -> doveadm(+0x33a5d) [0x5621b383aa5d] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x6bf) [0x5621b383beef] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x5621b384bfaf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x5621b384c02a] -> doveadm(main+0x1d4) [0x5621b382b8b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7f7b999a37fd] -> doveadm(_start+0x2a) [0x5621b382bb2a]
Abgebrochen (Speicherabzug geschrieben)

# coredumpctl gdb
           PID: 1603651 (doveadm)
           UID: 0 (root)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Tue 2022-02-22 15:41:17 CET (12s ago)
  Command Line: doveadm fts-flatcurve check -A INBOX
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-34.scope
          Unit: session-34.scope
         Slice: user-1000.slice
       Session: 34
     Owner UID: 1000 (rhering)
       Boot ID: 29fb1366af184227a36ef9949418b94d
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.0.29fb1366af184227a36ef9949418b94d.1603651.1645540877000000.zst (present)
     Disk Size: 245.8K
       Message: Process 1603651 (doveadm) of user 0 dumped core.

                Found module linux-vdso.so.1 with build-id: fe5c504f30a69e6b50c2193d4271e0f461e16f18
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 1603651:
                #0  0x00007f7b999b85f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007f7b999a2536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007f7b99cc17ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007f7b99d6c5e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007f7b99cc146b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007f7b99e7b311 mailbox_get_index_path (libdovecot-storage.so.0 + 0x40311)
                #6  0x00007f7b97398dd9 fts_backend_flatcurve_set_mailbox (lib21_fts_flatcurve_plugin.so + 0x9dd9)
                #7  0x00007f7b971436d7 cmd_fts_flatcurve_mailbox_run_do (lib21_doveadm_fts_flatcurve_plugin.so + 0x26d7)
                #8  0x00005621b383aa5d doveadm_mail_next_user (doveadm + 0x33a5d)
                #9  0x00005621b383beef doveadm_mail_all_users (doveadm + 0x34eef)
                #10 0x00005621b384bfaf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #11 0x00005621b384c02a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #12 0x00005621b382b8b4 main (doveadm + 0x248b4)
                #13 0x00007f7b999a37fd __libc_start_main (libc.so.6 + 0x237fd)
                #14 0x00005621b382bb2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 1603651]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve check -A INBOX'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007f7b999a2536 in __GI_abort () at abort.c:79
#2  0x00007f7b99cc17ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007f7b99d6c5e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007f7b99cc146b in i_panic (format=format@entry=0x7f7b99f47120 "file %s: line %d (%s): assertion failed: (%s)") at failures.c:524
#6  0x00007f7b99e7b311 in mailbox_get_index_path (box=box@entry=0x5621b4ee6988) at mail-storage.c:2933
#7  0x00007f7b97398dd9 in fts_backend_flatcurve_set_mailbox (backend=0x5621b4ed6280, box=0x5621b4ee6988) at fts-backend-flatcurve.c:119
#8  0x00007f7b971436d7 in cmd_fts_flatcurve_mailbox_run_do (ctx=0x5621b4e96398, user=<optimized out>, backend=0x5621b4ed6280) at doveadm-fts-flatcurve.c:145
#9  cmd_fts_flatcurve_mailbox_run (_ctx=0x5621b4e96398, user=<optimized out>) at doveadm-fts-flatcurve.c:231
#10 0x00005621b383aa5d in doveadm_mail_next_user (ctx=0x5621b4e96398, error_r=0x7ffd71787f98) at doveadm-mail.c:464
#11 0x00005621b383beef in doveadm_mail_all_users (wildcard_user=0x0, ctx=0x5621b4e96398) at doveadm-mail.c:535
#12 doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x5621b4e96398) at doveadm-mail.c:670
#13 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#14 0x00005621b384bfaf in doveadm_cmd_run_ver2 (argc=3, argv=0x5621b4e64a20, cctx=<optimized out>) at doveadm-cmd.c:465
#15 0x00005621b384c02a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x5621b4e64a48 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffd717880f0) at doveadm-cmd.c:363
#16 0x00005621b382b8b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
(gdb) 

Do you have some kind of strange read-only setup where a user does not have indexes?

nope, all read-write and indexes seem available, here is the folder structure. this setup is running without problems since several years

# find
.
./sieve
./sieve/roundcube.sieve
./sieve/tmp
./mdbox
./mdbox/dovecot-uidvalidity
./mdbox/subscriptions
./mdbox/dovecot.mailbox.log
./mdbox/dovecot.list.index.log
./mdbox/lucene-indexes
./mdbox/lucene-indexes/_2.cfs
./mdbox/lucene-indexes/_1.cfs
./mdbox/lucene-indexes/segments.gen
./mdbox/lucene-indexes/_0.cfs
./mdbox/lucene-indexes/_3.cfs
./mdbox/lucene-indexes/segments_9
./mdbox/dovecot-uidvalidity.58efca7d
./mdbox/dovecot-acl-list
./mdbox/mailboxes
./mdbox/mailboxes/Archive
./mdbox/mailboxes/Archive/dbox-Mails
./mdbox/mailboxes/Archive/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/Archive/dbox-Mails/dovecot.index.log
./mdbox/mailboxes/Trash
./mdbox/mailboxes/Trash/dbox-Mails
./mdbox/mailboxes/Trash/dbox-Mails/dovecot.index.backup
./mdbox/mailboxes/Trash/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/Trash/dbox-Mails/dovecot.index.thread
./mdbox/mailboxes/Trash/dbox-Mails/dovecot.index.log
./mdbox/mailboxes/Drafts
./mdbox/mailboxes/Drafts/dbox-Mails
./mdbox/mailboxes/Drafts/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/Drafts/dbox-Mails/dovecot.index.log
./mdbox/mailboxes/INBOX
./mdbox/mailboxes/INBOX/dbox-Mails
./mdbox/mailboxes/INBOX/dbox-Mails/fts-flatcurve
./mdbox/mailboxes/INBOX/dbox-Mails/fts-flatcurve/current.1645018353314031
./mdbox/mailboxes/INBOX/dbox-Mails/fts-flatcurve/current.1645018353314031/termlist.glass
./mdbox/mailboxes/INBOX/dbox-Mails/fts-flatcurve/current.1645018353314031/flintlock
./mdbox/mailboxes/INBOX/dbox-Mails/fts-flatcurve/current.1645018353314031/postlist.glass
./mdbox/mailboxes/INBOX/dbox-Mails/fts-flatcurve/current.1645018353314031/iamglass
./mdbox/mailboxes/INBOX/dbox-Mails/dovecot.index.backup
./mdbox/mailboxes/INBOX/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/INBOX/dbox-Mails/dovecot.index.log
./mdbox/mailboxes/dovecot-acl-list
./mdbox/mailboxes/Junk
./mdbox/mailboxes/Junk/dbox-Mails
./mdbox/mailboxes/Junk/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/Junk/dbox-Mails/dovecot.index.log
./mdbox/mailboxes/Sent
./mdbox/mailboxes/Sent/dbox-Mails
./mdbox/mailboxes/Sent/dbox-Mails/fts-flatcurve
./mdbox/mailboxes/Sent/dbox-Mails/fts-flatcurve/current.1645018455738437
./mdbox/mailboxes/Sent/dbox-Mails/fts-flatcurve/current.1645018455738437/termlist.glass
./mdbox/mailboxes/Sent/dbox-Mails/fts-flatcurve/current.1645018455738437/flintlock
./mdbox/mailboxes/Sent/dbox-Mails/fts-flatcurve/current.1645018455738437/postlist.glass
./mdbox/mailboxes/Sent/dbox-Mails/fts-flatcurve/current.1645018455738437/iamglass
./mdbox/mailboxes/Sent/dbox-Mails/dovecot.index.backup
./mdbox/mailboxes/Sent/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/Sent/dbox-Mails/dovecot.index.log
./mdbox/mailboxes/Templates
./mdbox/mailboxes/Templates/dbox-Mails
./mdbox/mailboxes/Templates/dbox-Mails/dovecot.index.cache
./mdbox/mailboxes/Templates/dbox-Mails/dovecot.index.log
./mdbox/storage
./mdbox/storage/m.793
./mdbox/storage/dovecot.map.index.log
./mdbox/storage/dovecot.map.index
./mdbox/dovecot.list.index

I also tested some other doveadm commands like doveadm index -A "*", I don't get any error. I added anonymized dovecot-configuration and information about my system.

dovecot.zip emerge-info.txt

internethering commented 2 years ago

here a backtrace of doveadm fts rescan:

# doveadm fts rescan -u local@domain.tld
doveadm(local@domain.tld): Panic: file mail-storage.c: line 2933 (mailbox_get_index_path): assertion failed: (box->_index_path != NULL)
doveadm(local@domain.tld): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7f04be00e60d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7f04be00e71e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7f04be01b5a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7f04be01b5e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7f04bdf7046b] -> /usr/lib64/dovecot/libdovecot-storage.so.0(+0x40311) [0x7f04be12a311] -> /usr/lib64/dovecot/lib21_fts_flatcurve_plugin.so(fts_backend_flatcurve_set_mailbox+0x49) [0x7f04bb647dd9] -> /usr/lib64/dovecot/lib21_fts_flatcurve_plugin.so(+0xa455) [0x7f04bb648455] -> /usr/lib64/dovecot/lib20_fts_plugin.so(fts_backend_rescan+0x5a) [0x7f04bdabf9da] -> /usr/lib64/dovecot/doveadm/lib20_doveadm_fts_plugin.so(+0x2cf7) [0x7f04bb3f9cf7] -> doveadm(+0x33a5d) [0x5555c65e3a5d] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x2bc) [0x5555c65e4aec] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x5555c65f4faf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x5555c65f502a] -> doveadm(main+0x1d4) [0x5555c65d48b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7f04bdc527fd] -> doveadm(_start+0x2a) [0x5555c65d4b2a]
Abgebrochen (Speicherabzug geschrieben)
alpha.test ~ # coredumpctl gdb
           PID: 1605401 (doveadm)
           UID: 65502 (vmail)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Tue 2022-02-22 16:14:33 CET (6s ago)
  Command Line: doveadm fts rescan -u local@domain.tld
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-36.scope
          Unit: session-36.scope
         Slice: user-1000.slice
       Session: 36
     Owner UID: 1000 (rhering)
       Boot ID: 29fb1366af184227a36ef9949418b94d
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.65502.29fb1366af184227a36ef9949418b94d.1605401.1645542873000000.zst (present)
     Disk Size: 248.6K
       Message: Process 1605401 (doveadm) of user 65502 dumped core.

                Found module linux-vdso.so.1 with build-id: fe5c504f30a69e6b50c2193d4271e0f461e16f18
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 1605401:
                #0  0x00007f04bdc675f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007f04bdc51536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007f04bdf707ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007f04be01b5e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007f04bdf7046b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007f04be12a311 mailbox_get_index_path (libdovecot-storage.so.0 + 0x40311)
                #6  0x00007f04bb647dd9 fts_backend_flatcurve_set_mailbox (lib21_fts_flatcurve_plugin.so + 0x9dd9)
                #7  0x00007f04bb648455 fts_backend_flatcurve_iterate_ns (lib21_fts_flatcurve_plugin.so + 0xa455)
                #8  0x00007f04bdabf9da fts_backend_rescan (lib20_fts_plugin.so + 0xc9da)
                #9  0x00007f04bb3f9cf7 cmd_fts_rescan_run (lib20_doveadm_fts_plugin.so + 0x2cf7)
                #10 0x00005555c65e3a5d doveadm_mail_next_user (doveadm + 0x33a5d)
                #11 0x00005555c65e4aec doveadm_mail_cmd_exec (doveadm + 0x34aec)
                #12 0x00005555c65f4faf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #13 0x00005555c65f502a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #14 0x00005555c65d48b4 main (doveadm + 0x248b4)
                #15 0x00007f04bdc527fd __libc_start_main (libc.so.6 + 0x237fd)
                #16 0x00005555c65d4b2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 1605401]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts rescan -u local@domain.tld'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007f04bdc51536 in __GI_abort () at abort.c:79
#2  0x00007f04bdf707ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007f04be01b5e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007f04bdf7046b in i_panic (format=format@entry=0x7f04be1f6120 "file %s: line %d (%s): assertion failed: (%s)") at failures.c:524
#6  0x00007f04be12a311 in mailbox_get_index_path (box=box@entry=0x5555c6c88348) at mail-storage.c:2933
#7  0x00007f04bb647dd9 in fts_backend_flatcurve_set_mailbox (backend=0x5555c6c70f00, box=0x5555c6c88348) at fts-backend-flatcurve.c:119
#8  0x00007f04bb648455 in fts_backend_flatcurve_iterate_ns (_backend=0x5555c6c70f00, act=FTS_BACKEND_FLATCURVE_ACTION_RESCAN) at fts-backend-flatcurve.c:487
#9  0x00007f04bdabf9da in fts_backend_rescan (backend=0x5555c6c70f00) at fts-api.c:267
#10 0x00007f04bb3f9cf7 in cmd_fts_rescan_run (ctx=0x5555c6c3a3a8, user=<optimized out>) at doveadm-fts.c:383
#11 0x00005555c65e3a5d in doveadm_mail_next_user (ctx=0x5555c6c3a3a8, error_r=0x7ffffdcd61e8) at doveadm-mail.c:464
#12 0x00005555c65e4aec in doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x5555c6c3a3a8) at doveadm-mail.c:659
#13 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#14 0x00005555c65f4faf in doveadm_cmd_run_ver2 (argc=3, argv=0x5555c6c08a20, cctx=<optimized out>) at doveadm-cmd.c:465
#15 0x00005555c65f502a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x5555c6c08a48 "fts", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffffdcd6340) at doveadm-cmd.c:363
#16 0x00005555c65d48b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
slusarz commented 2 years ago

My "small fix" actually ended up breaking CI. And it seems to occur during some doveadm commands and involves the index path being empty. So I might have inadvertently discovered a way to replicate this in testing.

slusarz commented 2 years ago

Maybe these latest commits help? Index path is documented to only be "lazily" loaded, but it does require the mailbox to be internally opened. It seems like that should always be the case, but maybe there is some weird code path where the mailbox is not necessarily open. At a minimum though, the code will now log a warning and skip the mailbox rather than assert crashing.

internethering commented 2 years ago

ok, it looks better now for some commands:

# systemctl restart dovecot
alpha.test rhering # doveadm fts rescan -u local@example.org
alpha.test rhering # doveadm fts rescan -A
alpha.test rhering # doveadm fts-flatcurve stats -u local@example.org  INBOX
INBOX guid=8320aa2bc4c8ef58ed3b0000da994df3 last_uid=21184 messages=41 shards=1 version=1

but with fts-flatcurve * -A it is still segfaulting:

doveadm(36551): Panic: file doveadm-print.c: line 146: unreached
doveadm(36551): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7fe8d76fb60d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7fe8d76fb71e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7fe8d77085a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7fe8d77085e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7fe8d765d46b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x54807) [0x7fe8d765d807] -> doveadm(+0x21262) [0x56023b952262] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x6a4) [0x56023b965ed4] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x56023b975faf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x56023b97602a] -> doveadm(main+0x1d4) [0x56023b9558b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7fe8d733f7fd] -> doveadm(_start+0x2a) [0x56023b955b2a]
Abgebrochen (Speicherabzug geschrieben)
alpha.test rhering # coredumpctl gdb
           PID: 36551 (doveadm)
           UID: 0 (root)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Tue 2022-03-01 12:25:48 CET (8s ago)
  Command Line: doveadm fts-flatcurve stats -A INBOX
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-5.scope
          Unit: session-5.scope
         Slice: user-1000.slice
       Session: 5
     Owner UID: 1000 (rhering)
       Boot ID: a613fed86ea041f5b30ac58422966b56
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.0.a613fed86ea041f5b30ac58422966b56.36551.1646133948000000.zst (present)
     Disk Size: 249.0K
       Message: Process 36551 (doveadm) of user 0 dumped core.

                Found module linux-vdso.so.1 with build-id: 88cc38a24fbae1c2d603f50067d220d6103af691
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 36551:
                #0  0x00007fe8d73545f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007fe8d733e536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007fe8d765d7ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007fe8d77085e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007fe8d765d46b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007fe8d765d807 i_unreached (libdovecot.so.0 + 0x54807)
                #6  0x000056023b952262 doveadm_print_sticky (doveadm + 0x21262)
                #7  0x000056023b965ed4 doveadm_mail_all_users (doveadm + 0x34ed4)
                #8  0x000056023b975faf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #9  0x000056023b97602a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #10 0x000056023b9558b4 main (doveadm + 0x248b4)
                #11 0x00007fe8d733f7fd __libc_start_main (libc.so.6 + 0x237fd)
                #12 0x000056023b955b2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 36551]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve stats -A INBOX'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007fe8d733e536 in __GI_abort () at abort.c:79
#2  0x00007fe8d765d7ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007fe8d77085e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007fe8d765d46b in i_panic (format=format@entry=0x7fe8d776923d "file %s: line %d: unreached") at failures.c:524
#6  0x00007fe8d765d807 in i_unreached (source_filename=source_filename@entry=0x56023b9a5647 "doveadm-print.c", source_linenum=source_linenum@entry=146) at failures.c:990
#7  0x000056023b952262 in doveadm_print_sticky (key=key@entry=0x56023b9a58a3 "username", value=0x56023cc84aa0 "local2@example.org") at doveadm-print.c:146
#8  0x000056023b965ed4 in doveadm_mail_all_users (wildcard_user=0x0, ctx=0x56023cc78348) at doveadm-mail.c:533
#9  doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x56023cc78348) at doveadm-mail.c:670
#10 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#11 0x000056023b975faf in doveadm_cmd_run_ver2 (argc=3, argv=0x56023cc46a20, cctx=<optimized out>) at doveadm-cmd.c:465
#12 0x000056023b97602a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x56023cc46a48 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffdeda4ede0) at doveadm-cmd.c:363
#13 0x000056023b9558b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
(gdb) 

also:

alpha.test rhering # doveadm fts-flatcurve check -A INBOX
doveadm(36679): Panic: file doveadm-print.c: line 146: unreached
doveadm(36679): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7f4c7687a60d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7f4c7687a71e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7f4c768875a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7f4c768875e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7f4c767dc46b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x54807) [0x7f4c767dc807] -> doveadm(+0x21262) [0x555a3282f262] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x6a4) [0x555a32842ed4] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x555a32852faf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x555a3285302a] -> doveadm(main+0x1d4) [0x555a328328b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7f4c764be7fd] -> doveadm(_start+0x2a) [0x555a32832b2a]
Abgebrochen (Speicherabzug geschrieben)

the backtrace looks similiar to above.

then I tried this, seems like another bug

alpha.test rhering # doveadm fts-flatcurve rotate -A INBOX
Speicherzugriffsfehler (Speicherabzug geschrieben)
alpha.test rhering # coredumpctl gdb
           PID: 36898 (doveadm)
           UID: 0 (root)
           GID: 65502 (vmail)
        Signal: 11 (SEGV)
     Timestamp: Tue 2022-03-01 12:32:19 CET (5s ago)
  Command Line: doveadm fts-flatcurve rotate -A INBOX
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-5.scope
          Unit: session-5.scope
         Slice: user-1000.slice
       Session: 5
     Owner UID: 1000 (rhering)
       Boot ID: a613fed86ea041f5b30ac58422966b56
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.0.a613fed86ea041f5b30ac58422966b56.36898.1646134339000000.zst (present)
     Disk Size: 248.0K
       Message: Process 36898 (doveadm) of user 0 dumped core.

                Found module linux-vdso.so.1 with build-id: 88cc38a24fbae1c2d603f50067d220d6103af691
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 36898:
                #0  0x00007f9c82b97d06 fts_flatcurve_xapian_write_db_get (lib21_fts_flatcurve_plugin.so + 0xcd06)
                #1  0x00007f9c82b99a0e fts_flatcurve_xapian_write_db_current (lib21_fts_flatcurve_plugin.so + 0xea0e)
                #2  0x00007f9c8293f708 cmd_fts_flatcurve_mailbox_run_box (lib21_doveadm_fts_flatcurve_plugin.so + 0x2708)
                #3  0x0000560af3b58a5d doveadm_mail_next_user (doveadm + 0x33a5d)
                #4  0x0000560af3b59eef doveadm_mail_all_users (doveadm + 0x34eef)
                #5  0x0000560af3b69faf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #6  0x0000560af3b6a02a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #7  0x0000560af3b498b4 main (doveadm + 0x248b4)
                #8  0x00007f9c8519f7fd __libc_start_main (libc.so.6 + 0x237fd)
                #9  0x0000560af3b49b2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 36898]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve rotate -A INBOX'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  fts_flatcurve_xapian_write_db_get (backend=0x560af40801d0, xdb=0x0, wopts=0) at fts-backend-flatcurve-xapian.cpp:368
368             if (xdb->dbw != NULL)
(gdb) bt
#0  fts_flatcurve_xapian_write_db_get (backend=0x560af40801d0, xdb=0x0, wopts=0) at fts-backend-flatcurve-xapian.cpp:368
#1  0x00007f9c82b99a0e in fts_flatcurve_xapian_write_db_current (opts=(FLATCURVE_XAPIAN_DB_NOCREATE_CURRENT | FLATCURVE_XAPIAN_DB_IGNORE_EMPTY | FLATCURVE_XAPIAN_DB_NOCLOSE_CURRENT), backend=backend@entry=0x560af40801d0) at fts-backend-flatcurve-xapian.cpp:662
#2  fts_flatcurve_xapian_mailbox_rotate (backend=backend@entry=0x560af40801d0) at fts-backend-flatcurve-xapian.cpp:759
#3  0x00007f9c8293f708 in cmd_fts_flatcurve_mailbox_run_box (box=0x560af40908d8, ctx=0x560af4040348, backend=0x560af40801d0) at doveadm-fts-flatcurve.c:77
#4  cmd_fts_flatcurve_mailbox_run_do (ctx=0x560af4040348, user=<optimized out>, backend=0x560af40801d0) at doveadm-fts-flatcurve.c:146
#5  cmd_fts_flatcurve_mailbox_run (_ctx=0x560af4040348, user=<optimized out>) at doveadm-fts-flatcurve.c:231
#6  0x0000560af3b58a5d in doveadm_mail_next_user (ctx=0x560af4040348, error_r=0x7ffcd9ada4d8) at doveadm-mail.c:464
#7  0x0000560af3b59eef in doveadm_mail_all_users (wildcard_user=0x0, ctx=0x560af4040348) at doveadm-mail.c:535
#8  doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x560af4040348) at doveadm-mail.c:670
#9  doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#10 0x0000560af3b69faf in doveadm_cmd_run_ver2 (argc=3, argv=0x560af400ea20, cctx=<optimized out>) at doveadm-cmd.c:465
#11 0x0000560af3b6a02a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x560af400ea48 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffcd9ada630) at doveadm-cmd.c:363
#12 0x0000560af3b498b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
(gdb) 
slusarz commented 2 years ago

Sadly, basic "doveadm rotate" testing was missing from CI since that would have caught at least the last segfault you reported. This latest patch should fix at least the latter two segfaults you were seeing (and hopefully fixes the first one as well).

internethering commented 2 years ago

ok, this problem seems fixed, working:

doveadm fts-flatcurve stats -u local@example.org INBOX
INBOX guid=8320aa2bc4c8ef58ed3b0000da994df3 last_uid=21184 messages=41 shards=1 version=1
doveadm fts-flatcurve rotate -u local@example.org INBOX
INBOX guid=8320aa2bc4c8ef58ed3b0000da994df3

and also for another mailbox without indices:

doveadm fts-flatcurve rotate -u local2@example.org INBOX
doveadm fts-flatcurve stats -u local2@example.org INBOX

but another problem rised:

alpha.test rhering # doveadm fts-flatcurve stats -A INBOX
doveadm(123067): Panic: file doveadm-print.c: line 146: unreached
doveadm(123067): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7f9904f9760d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7f9904f9771e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7f9904fa45a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7f9904fa45e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7f9904ef946b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x54807) [0x7f9904ef9807] -> doveadm(+0x21262) [0x558d66081262] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x6a4) [0x558d66094ed4] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x558d660a4faf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x558d660a502a] -> doveadm(main+0x1d4) [0x558d660848b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7f9904bdb7fd] -> doveadm(_start+0x2a) [0x558d66084b2a]
Abgebrochen (Speicherabzug geschrieben)
alpha.test rhering # coredumpctl gdb
           PID: 123067 (doveadm)
           UID: 0 (root)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Wed 2022-03-02 14:11:26 CET (6s ago)
  Command Line: doveadm fts-flatcurve stats -A INBOX
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-7.scope
          Unit: session-7.scope
         Slice: user-1000.slice
       Session: 7
     Owner UID: 1000 (rhering)
       Boot ID: a613fed86ea041f5b30ac58422966b56
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.0.a613fed86ea041f5b30ac58422966b56.123067.1646226686000000.zst (present)
     Disk Size: 249.5K
       Message: Process 123067 (doveadm) of user 0 dumped core.

                Found module linux-vdso.so.1 with build-id: 88cc38a24fbae1c2d603f50067d220d6103af691
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 123067:
                #0  0x00007f9904bf05f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007f9904bda536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007f9904ef97ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007f9904fa45e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007f9904ef946b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007f9904ef9807 i_unreached (libdovecot.so.0 + 0x54807)
                #6  0x0000558d66081262 doveadm_print_sticky (doveadm + 0x21262)
                #7  0x0000558d66094ed4 doveadm_mail_all_users (doveadm + 0x34ed4)
                #8  0x0000558d660a4faf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #9  0x0000558d660a502a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #10 0x0000558d660848b4 main (doveadm + 0x248b4)
                #11 0x00007f9904bdb7fd __libc_start_main (libc.so.6 + 0x237fd)
                #12 0x0000558d66084b2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 123067]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve stats -A INBOX'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007f9904bda536 in __GI_abort () at abort.c:79
#2  0x00007f9904ef97ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007f9904fa45e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007f9904ef946b in i_panic (format=format@entry=0x7f990500523d "file %s: line %d: unreached") at failures.c:524
#6  0x00007f9904ef9807 in i_unreached (source_filename=source_filename@entry=0x558d660d4647 "doveadm-print.c", source_linenum=source_linenum@entry=146) at failures.c:990
#7  0x0000558d66081262 in doveadm_print_sticky (key=key@entry=0x558d660d48a3 "username", value=0x558d66771ac0 "local@example.org") at doveadm-print.c:146
#8  0x0000558d66094ed4 in doveadm_mail_all_users (wildcard_user=0x0, ctx=0x558d66765368) at doveadm-mail.c:533
#9  doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x558d66765368) at doveadm-mail.c:670
#10 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#11 0x0000558d660a4faf in doveadm_cmd_run_ver2 (argc=3, argv=0x558d66733a20, cctx=<optimized out>) at doveadm-cmd.c:465
#12 0x0000558d660a502a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x558d66733a48 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffcfc0207f0) at doveadm-cmd.c:363
#13 0x0000558d660848b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
alpha.test rhering # doveadm fts-flatcurve rotate -A INBOX
doveadm(123166): Panic: file doveadm-print.c: line 146: unreached
doveadm(123166): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x3d) [0x7ff2ed45860d] -> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7ff2ed45871e] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5a9) [0x7ff2ed4655a9] -> /usr/lib64/dovecot/libdovecot.so.0(+0xff5e1) [0x7ff2ed4655e1] -> /usr/lib64/dovecot/libdovecot.so.0(+0x5446b) [0x7ff2ed3ba46b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x54807) [0x7ff2ed3ba807] -> doveadm(+0x21262) [0x55663d545262] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x6a4) [0x55663d558ed4] -> doveadm(doveadm_cmd_run_ver2+0x4df) [0x55663d568faf] -> doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x55663d56902a] -> doveadm(main+0x1d4) [0x55663d5488b4] -> /lib64/libc.so.6(__libc_start_main+0xcd) [0x7ff2ed09c7fd] -> doveadm(_start+0x2a) [0x55663d548b2a]
Abgebrochen (Speicherabzug geschrieben)
alpha.test rhering # coredumpctl gdb
           PID: 123166 (doveadm)
           UID: 0 (root)
           GID: 65502 (vmail)
        Signal: 6 (ABRT)
     Timestamp: Wed 2022-03-02 14:12:41 CET (1s ago)
  Command Line: doveadm fts-flatcurve rotate -A INBOX
    Executable: /usr/bin/doveadm
 Control Group: /user.slice/user-1000.slice/session-7.scope
          Unit: session-7.scope
         Slice: user-1000.slice
       Session: 7
     Owner UID: 1000 (rhering)
       Boot ID: a613fed86ea041f5b30ac58422966b56
    Machine ID: 6c8725f9e2f751645ac1422658e66800
      Hostname: alpha.test
       Storage: /var/lib/systemd/coredump/core.doveadm.0.a613fed86ea041f5b30ac58422966b56.123166.1646226761000000.zst (present)
     Disk Size: 249.2K
       Message: Process 123166 (doveadm) of user 0 dumped core.

                Found module linux-vdso.so.1 with build-id: 88cc38a24fbae1c2d603f50067d220d6103af691
                Found module libnss_myhostname.so.2 without build-id.
                Found module libnss_files.so.2 without build-id.
                Found module libcap.so.2 without build-id.
                Found module libnss_mymachines.so.2 without build-id.
                Found module lib21_doveadm_fts_flatcurve_plugin.so without build-id.
                Found module lib20_doveadm_fts_plugin.so without build-id.
                Found module lib10_doveadm_quota_plugin.so without build-id.
                Found module lib10_doveadm_acl_plugin.so without build-id.
                Found module libuuid.so.1 without build-id.
                Found module librt.so.1 without build-id.
                Found module libxapian.so.30 without build-id.
                Found module lib21_fts_flatcurve_plugin.so without build-id.
                Found module lib20_zlib_plugin.so without build-id.
                Found module lib20_virtual_plugin.so without build-id.
                Found module lib20_replication_plugin.so without build-id.
                Found module libicudata.so.70 without build-id.
                Found module libgcc_s.so.1 without build-id.
                Found module libstdc++.so.6 without build-id.
                Found module libicuuc.so.70 without build-id.
                Found module libicui18n.so.70 without build-id.
                Found module libexttextcat-2.0.so.0 without build-id.
                Found module libstemmer.so.2 without build-id.
                Found module lib20_fts_plugin.so without build-id.
                Found module lib15_notify_plugin.so without build-id.
                Found module lib11_trash_plugin.so without build-id.
                Found module lib10_quota_plugin.so without build-id.
                Found module lib01_acl_plugin.so without build-id.
                Found module libdovecot-sieve.so.0 without build-id.
                Found module lib10_doveadm_sieve_plugin.so without build-id.
                Found module libdl.so.2 without build-id.
                Found module libpthread.so.0 without build-id.
                Found module libc.so.6 without build-id.
                Found module libm.so.6 without build-id.
                Found module libdovecot.so.0 without build-id.
                Found module libdovecot-storage.so.0 without build-id.
                Found module libcrypt.so.2 without build-id.
                Found module liblz4.so.1 without build-id.
                Found module liblzma.so.5 without build-id.
                Found module libbz2.so.1 without build-id.
                Found module libz.so.1 without build-id.
                Found module doveadm without build-id.
                Stack trace of thread 123166:
                #0  0x00007ff2ed0b15f1 __GI_raise (libc.so.6 + 0x385f1)
                #1  0x00007ff2ed09b536 __GI_abort (libc.so.6 + 0x22536)
                #2  0x00007ff2ed3ba7ba default_fatal_finish (libdovecot.so.0 + 0x547ba)
                #3  0x00007ff2ed4655e1 default_fatal_handler (libdovecot.so.0 + 0xff5e1)
                #4  0x00007ff2ed3ba46b i_panic (libdovecot.so.0 + 0x5446b)
                #5  0x00007ff2ed3ba807 i_unreached (libdovecot.so.0 + 0x54807)
                #6  0x000055663d545262 doveadm_print_sticky (doveadm + 0x21262)
                #7  0x000055663d558ed4 doveadm_mail_all_users (doveadm + 0x34ed4)
                #8  0x000055663d568faf doveadm_cmd_run_ver2 (doveadm + 0x44faf)
                #9  0x000055663d56902a doveadm_cmd_try_run_ver2 (doveadm + 0x4502a)
                #10 0x000055663d5488b4 main (doveadm + 0x248b4)
                #11 0x00007ff2ed09c7fd __libc_start_main (libc.so.6 + 0x237fd)
                #12 0x000055663d548b2a _start (doveadm + 0x24b2a)

GNU gdb (Gentoo 11.2 vanilla) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...
Reading symbols from /usr/lib/debug//usr/bin/doveadm.debug...
[New LWP 123166]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `doveadm fts-flatcurve rotate -A INBOX'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007ff2ed09b536 in __GI_abort () at abort.c:79
#2  0x00007ff2ed3ba7ba in default_fatal_finish (status=0, type=LOG_TYPE_PANIC) at failures.c:459
#3  fatal_handler_real (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:471
#4  0x00007ff2ed4655e1 in default_fatal_handler (ctx=<optimized out>, format=<optimized out>, args=<optimized out>) at failures.c:479
#5  0x00007ff2ed3ba46b in i_panic (format=format@entry=0x7ff2ed4c623d "file %s: line %d: unreached") at failures.c:524
#6  0x00007ff2ed3ba807 in i_unreached (source_filename=source_filename@entry=0x55663d598647 "doveadm-print.c", source_linenum=source_linenum@entry=146) at failures.c:990
#7  0x000055663d545262 in doveadm_print_sticky (key=key@entry=0x55663d5988a3 "username", value=0x55663ec80ac0 "local@example.org") at doveadm-print.c:146
#8  0x000055663d558ed4 in doveadm_mail_all_users (wildcard_user=0x0, ctx=0x55663ec74368) at doveadm-mail.c:533
#9  doveadm_mail_cmd_exec (wildcard_user=0x0, ctx=0x55663ec74368) at doveadm-mail.c:670
#10 doveadm_cmd_ver2_to_mail_cmd_wrapper (cctx=<optimized out>) at doveadm-mail.c:988
#11 0x000055663d568faf in doveadm_cmd_run_ver2 (argc=3, argv=0x55663ec42a20, cctx=<optimized out>) at doveadm-cmd.c:465
#12 0x000055663d56902a in doveadm_cmd_try_run_ver2 (cmd_name=cmd_name@entry=0x55663ec42a48 "fts-flatcurve", argc=<optimized out>, argv=<optimized out>, cctx=cctx@entry=0x7ffedcbcb190) at doveadm-cmd.c:363
#13 0x000055663d5488b4 in main (argc=<optimized out>, argv=<optimized out>) at doveadm.c:361
(gdb)
slusarz commented 2 years ago

Fixed by 2450e68.