i_stream_read_memarea: assertion failed: (!stream->blocking)
Continuation of https://dovecot.org/pipermail/dovecot/2021-January/121235.html
- I didn't get a reply to my last mail, so ended up deleting the various messages (or in some cases mailboxes) and stopped running into problems for a while, but am now seeing it again.
I get "i_stream_read_memarea: assertion failed: (!stream->blocking)" when accessing some messages. Backtrace and doveconf -n below.
$ doveadm -D search from abcdefghij [...] Aug 13 17:30:02 doveadm(sthen): Debug: Mailbox trash: UID 1177: Looked up field guid from mail cache Aug 13 17:30:02 doveadm(sthen): Debug: Mailbox trash: UID 1177: Opened mail because: 1/1 headers not cached (first=from) (Mail has other cached fields, reset_id=1470764070) Aug 13 17:30:02 doveadm(sthen): Debug: Mailbox trash: UID 1178: Looked up field guid from mail cache Aug 13 17:30:02 doveadm(sthen): Debug: Mailbox trash: UID 1178: Looked up field guid from mail cache Aug 13 17:30:02 doveadm(sthen): Debug: Mailbox trash: UID 1178: Looked up field guid from mail cache Aug 13 17:30:02 doveadm(sthen): Debug: Mailbox trash: UID 1178: Opened mail because: 1/1 headers not cached (first=from) (Mail has other cached fields, reset_id=1470764070) Aug 13 17:30:02 doveadm(sthen): Panic: file istream.c: line 345 (i_stream_read_memarea): assertion failed: (!stream->blocking) Abort trap (core dumped)
Some other searches hitting the same message do succeed though e.g. "doveadm search mailbox trash".
Somehow after various other searches trying to figure out what triggered the crash and what didn't (e.g. "doveadm -D search mailbox trash uid 1170:12000 from abc" crashed but "uid 1170:1190" didn't) it has stopped failing with that particular message, but I am still hitting it in at least one other mailbox.
The messages where I'm seeing this so far seem to all be stored with lz4 (a couple of years old mostly).
Any ideas?
GNU gdb (GDB) 7.12.1
Copyright (C) 2017 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-unknown-openbsd6.9".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
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 doveadm...Reading symbols from /usr/local/bin/.debug/doveadm.dbg...done.
done.
[New process 130792]
Core was generated by `doveadm'.
Program terminated with signal SIGABRT, Aborted.
#0 thrkill () at /tmp/-:3
3 /tmp/-: No such file or directory.
(gdb) bt
#0 thrkill () at /tmp/-:3
#1 0x00000c3b2a1ee58e in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
#2 0x00000c3b2780f876 in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at failures.c:459
#3 0x00000c3b2780dc94 in fatal_handler_real (ctx=0x7f7ffffcb040,
format=
$ doveconf -n # some parts replaced with <snip> # 2.3.16 (7e2e900c1a): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.16 (09c29328) # OS: OpenBSD 6.9 amd64 # Hostname: naiad.spacehopper.org dsync_remote_cmd = /usr/bin/ssh <snip> first_valid_uid = 1000 lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}> %k login_trusted_networks = 127.0.0.1 <snip> mail_location = mdbox:~/mdbox mail_plugins = " zlib notify replication" managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext vacation-seconds spamtest spamtestplus imapsieve vnd.dovecot.imapsieve mbox_write_locks = fcntl mdbox_rotate_interval = 4 days mdbox_rotate_size = 15 M mmap_disable = yes namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = separator = / } passdb { args = scheme=CRYPT username_format=%u /etc/dovecot/users driver = passwd-file } plugin { imapsieve_mailbox1_before = file:/etc/dovecot/sieve/report-spam.sieve imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_name = zSpam imapsieve_mailbox2_before = file:/etc/dovecot/sieve/report-ham.sieve imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_from = zSpam imapsieve_mailbox2_name = * imapsieve_mailbox3_before = file:/etc/dovecot/sieve/report-ham.sieve imapsieve_mailbox3_causes = COPY imapsieve_mailbox3_name = zHam mail_replica = <snip> sieve = file:~/sieve;active=~/.dovecot.sieve sieve_before = /etc/dovecot/sieve/before.d/ sieve_extensions = +spamtest +spamtestplus +vacation-seconds sieve_global_extensions = +vnd.dovecot.pipe sieve_pipe_bin_dir = /etc/dovecot/sieve/bin sieve_plugins = sieve_imapsieve sieve_extprograms sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+ \[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\] sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+ \[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\] sieve_spamtest_status_type = score sieve_vacation_default_period = 6h sieve_vacation_max_period = 0 sieve_vacation_min_period = 1m } protocols = imap pop3 lmtp sieve replication_max_conns = 4 service aggregator { fifo_listener replication-notify-fifo { mode = 0666 } unix_listener replication-notify { mode = 0666 } } service auth { unix_listener /var/spool/postfix/private/auth { group = _postfix mode = 0660 user = _postfix } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } } service imap { vsz_limit = 512 M } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = _postfix mode = 0660 user = _postfix } vsz_limit = 512 M } service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 2000 } service_count = 1 } service pop3-login { inet_listener pop3s { port = 995 ssl = yes } } service replicator { process_min_avail = 1 unix_listener replicator-doveadm { mode = 0600 } } ssl_alt_cert =
On 13. Aug 2021, at 19.10, Stuart Henderson stu@spacehopper.org wrote:
I get "i_stream_read_memarea: assertion failed: (!stream->blocking)" when accessing some messages. Backtrace and doveconf -n below.
Does the attached patch fix it?
On 2021/08/16 13:32, Timo Sirainen wrote:
On 13. Aug 2021, at 19.10, Stuart Henderson stu@spacehopper.org wrote:
I get "i_stream_read_memarea: assertion failed: (!stream->blocking)" when accessing some messages. Backtrace and doveconf -n below.
Does the attached patch fix it?
It does - thank you.
participants (2)
-
Stuart Henderson
-
Timo Sirainen