Hi
I'm reposting this patch, which I have been applying locally since I
originally posted it. Hopefully it can be considered for inclusion in
the official release. It was tested on dovecot 2.3.16 but applies
against the latest version 2.3.17.1.
This is the "assertion failed" that it addresses
doveadm fts lookup -u [email protected] body "text to look for"
doveadm([email protected]): Panic: file mail-storage.c: line 2108
(mailbox_get_open_status): assertion failed: (box->opened)
doveadm([email protected]): Error: Raw backtrace:
/usr/local/lib/dovecot/libdovecot.so.0(backtrace_append+0x42)
[0x7ff624fa7072] ->
/usr/local/lib/dovecot/libdovecot.so.0(backtrace_get+0x1e)
[0x7ff624fa718e] -> /usr/local/lib/dovecot/libdovecot.so.0(+0xffc3b)
[0x7ff624fb3c3b] -> /usr/local/lib/dovecot/libdovecot.so.0(+0xffc71)
[0x7ff624fb3c71] -> /usr/local/lib/dovecot/libdovecot.so.0(+0x5536f)
[0x7ff624f0936f] ->
/usr/local/lib/dovecot/libdovecot-storage.so.0(+0x3fc31)
[0x7ff6250bcc31] ->
/usr/local/lib/dovecot/lib21_fts_solr_plugin.so(+0x540d)
[0x7ff62244f40d] ->
/usr/local/lib/dovecot/lib20_fts_plugin.so(fts_backend_lookup+0x4d)
[0x7ff6246b624d] ->
/usr/local/lib/dovecot/doveadm/lib20_doveadm_fts_plugin.so(+0x2e8c)
[0x7ff62240ce8c] -> doveadm(+0x31ded) [0x55f0c7f3aded] ->
doveadm(+0x32862) [0x55f0c7f3b862] ->
doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x22d) [0x55f0c7f3c6fd] ->
doveadm(doveadm_cmd_run_ver2+0x4d8) [0x55f0c7f4d158] ->
doveadm(doveadm_cmd_try_run_ver2+0x3a) [0x55f0c7f4d1aa] ->
doveadm(main+0x1f6) [0x55f0c7f2b606] ->
/lib64/libc.so.6(__libc_start_main+0xd5) [0x7ff624bc8b75] ->
doveadm(_start+0x2e) [0x55f0c7f2ba0e]
Aborted (core dumped)
Here's the patch:
diff -ur dovecot-2.3.17.1-orig/src/plugins/fts/doveadm-fts.c
dovecot-2.3.17.1-new/src/plugins/fts/doveadm-fts.c
--- dovecot-2.3.17.1-orig/src/plugins/fts/doveadm-fts.c 2021-12-03
12:48:47.000000000 +0100
+++ dovecot-2.3.17.1-new/src/plugins/fts/doveadm-fts.c 2022-01-09
01:33:23.396342025 +0100
@@ -47,6 +47,14 @@
i_array_init(&result.scores, 16);
box = mailbox_alloc(info->ns->list, info->vname, 0);
+ mailbox_set_reason(box,"fts search");
+ if (mailbox_open(box) < 0) {
+ i_error("Couldn't open mailbox: %s",
+ mailbox_get_last_internal_error(box, NULL));
+ doveadm_mail_failed_error(ctx, MAIL_ERROR_TEMP);
+ return -1;
+ }
+
if (fts_backend_lookup(backend, box, ctx->search_args->args,
FTS_LOOKUP_FLAG_AND_ARGS,
&result) < 0) {
i_error("fts lookup failed");
John