2.13 read, i_stream_read_memarea: assertion failed: (!stream->blocking)
Stuart Henderson
stu at spacehopper.org
Sun Jan 24 15:11:28 EET 2021
I'm seeing this on some mailboxes with 2.13 on OpenBSD amd64 (recent
snapshot):
dovecot: imap(sthen)<47220><ARy1oKS5lWDDX7sa>: Panic: file istream.c: line 332 (i_stream_read_memarea): assertion failed: (!stream->blocking)
Using sieve, imapsieve, replicator, zlib (zlib_save = lz4 and has
been for some time, so the relevant messages probably use this).
Using mmap_disable because OpenBSD.
Any suggestions how to handle it, preferably automatically?
(even if a message is corrupt/lost it would be really nice if a
standard client could still access the mailbox rather than kill
the imap process while reading headers).
bt first for ease of reading, followed by bt full in case it has any
additional clues.
(gdb) bt
#0 thrkill () at /tmp/-:3
#1 0x00000e9158c7c3ae in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
#2 0x00000e91adc00c26 in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at failures.c:459
#3 0x00000e91adbff034 in fatal_handler_real (ctx=0x7f7ffffcdd90, format=<optimized out>,
args=<optimized out>) at failures.c:471
#4 0x00000e91adbfffb1 in i_internal_fatal_handler (ctx=0x0,
format=0x6 <error: Cannot access memory at address 0x6>, args=0x0) at failures.c:866
#5 0x00000e91adbff266 in i_panic (format=0x6 <error: Cannot access memory at address 0x6>)
at failures.c:523
#6 0x00000e91adc0f15c in i_stream_read_memarea (stream=0xe917ead3480) at istream.c:332
#7 0x00000e91adc1925f in read_more (sstream=0xe91431c4800) at istream-seekable.c:149
#8 0x00000e91adc19090 in read_from_buffer (sstream=0xe91431c4800, ret_r=0x7f7ffffcded8)
at istream-seekable.c:204
#9 0x00000e91adc1856d in i_stream_seekable_read (stream=0xe91431c4800) at istream-seekable.c:265
#10 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91431c4880) at istream.c:313
#11 0x00000e91adc16bbc in i_stream_limit_read (stream=0xe91e9ccca00) at istream-limit.c:49
#12 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91e9ccca80) at istream.c:313
#13 0x00000e91adc0f79c in i_stream_read_copy_from_parent (istream=<optimized out>) at istream.c:387
#14 0x00000e918e9729fa in i_stream_mail_read (stream=0xe91e9ccc000) at istream-mail.c:115
#15 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91e9ccc080) at istream.c:313
#16 0x00000e91adc104f5 in i_stream_read (stream=0xe91e9ccc080) at istream.c:271
#17 i_stream_read_data (stream=0xe91e9ccc080, data_r=0x7f7ffffce110, size_r=0x7f7ffffce100, threshold=1)
at istream.c:747
#18 0x00000e91adbd6a18 in i_stream_read_bytes (stream=0x0, data_r=<optimized out>,
size_r=<optimized out>, wanted=<optimized out>) at ../../src/lib/istream.h:214
#19 message_parse_header_next (ctx=0xe9183e1b180, hdr_r=0x7f7ffffce1d0) at message-header-parser.c:85
#20 0x00000e91adbceef2 in read_header (mstream=0xe91e9cc6000) at istream-header-filter.c:195
#21 i_stream_header_filter_read (stream=0xe91e9cc6000) at istream-header-filter.c:450
#22 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91e9cc6080) at istream.c:313
#23 0x00000e91adc104f5 in i_stream_read (stream=0xe91e9cc6080) at istream.c:271
#24 i_stream_read_data (stream=0xe91e9cc6080, data_r=0x7f7ffffce2c0, size_r=0x7f7ffffce2c8, threshold=0)
at istream.c:747
#25 0x00000e91adbdc07b in i_stream_read_bytes (stream=0xe91e9cc6080, data_r=<optimized out>,
size_r=<optimized out>, wanted=<error reading variable: Cannot access memory at address 0x1>)
at ../../src/lib/istream.h:214
#26 message_get_header_size (input=0xe91e9cc6080, hdr=0x7f7ffffce328, has_nuls_r=0x7f7ffffce3b7)
at message-size.c:19
#27 0x00000e8f25e767d9 in imap_msgpart_get_partial_header (mail=0xe91e9cc4848,
mail_input=<optimized out>, msgpart=0xe91c92a2048, virtual_size_r=<optimized out>,
result_r=0x7f7ffffce408, have_crlfs_r=<optimized out>) at imap-msgpart.c:401
#28 imap_msgpart_open_normal (mail=<optimized out>, msgpart=0xe91c92a2048, part=<optimized out>,
virtual_size_r=<optimized out>, result_r=0x7f7ffffce408, have_crlfs_r=<optimized out>)
at imap-msgpart.c:637
#29 imap_msgpart_open (mail=<optimized out>, msgpart=0xe91c92a2048, result_r=0x7f7ffffce408)
at imap-msgpart.c:706
#30 0x00000e8f25e672ff in fetch_body_msgpart (ctx=0xe9159845368, mail=<optimized out>,
body=0xe91e9cb4398) at imap-fetch-body.c:184
#31 0x00000e8f25e65837 in imap_fetch_more_int (ctx=0xe9159845368, cancel=false) at imap-fetch.c:562
#32 0x00000e8f25e6552c in imap_fetch_more (ctx=0xe9159845368, cmd=0xe9159845048) at imap-fetch.c:617
#33 0x00000e8f25e55521 in cmd_fetch (cmd=0xe9159845048) at cmd-fetch.c:337
#34 0x00000e8f25e62d12 in command_exec (cmd=0xe9159845048) at imap-commands.c:201
#35 0x00000e8f25e61576 in client_command_input (cmd=0xe9159845048) at imap-client.c:1204
#36 0x00000e8f25e61682 in client_command_input (cmd=0xe9159845048) at imap-client.c:1269
#37 0x00000e8f25e5ffb4 in client_handle_next_command (client=0xe9159845848, remove_io_r=<optimized out>)
at imap-client.c:1313
#38 client_handle_input (client=0xe9159845848) at imap-client.c:1327
#39 0x00000e8f25e5e755 in client_input (client=0xe9159845848) at imap-client.c:1371
#40 0x00000e91adc1c851 in io_loop_call_io (io=0xe91eb5d0b00) at ioloop.c:714
#41 0x00000e91adc1f84c in io_loop_handler_run_internal (ioloop=0xe9162373d00) at ioloop-kqueue.c:164
#42 0x00000e91adc1cfd9 in io_loop_handler_run (ioloop=0xe9162373d00) at ioloop.c:766
#43 0x00000e91adc1cce8 in io_loop_run (ioloop=0xe9162373d00) at ioloop.c:739
#44 0x00000e91adb77655 in master_service_run (service=0xe9193c39600, callback=0x6)
at master-service.c:853
#45 0x00000e8f25e70dd1 in main (argc=1, argv=<optimized out>) at main.c:532
(gdb) bt full
#0 thrkill () at /tmp/-:3
No locals.
#1 0x00000e9158c7c3ae in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
sa = {
__sigaction_u = {
__sa_handler = 0x0,
__sa_sigaction = 0x0
},
sa_mask = 4294967295,
sa_flags = 0
}
mask = 4294967263
#2 0x00000e91adc00c26 in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at failures.c:459
recursed = 0
backtrace = <optimized out>
#3 0x00000e91adbff034 in fatal_handler_real (ctx=0x7f7ffffcdd90, format=<optimized out>,
args=<optimized out>) at failures.c:471
status = 6
#4 0x00000e91adbfffb1 in i_internal_fatal_handler (ctx=0x0,
format=0x6 <error: Cannot access memory at address 0x6>, args=0x0) at failures.c:866
No locals.
#5 0x00000e91adbff266 in i_panic (format=0x6 <error: Cannot access memory at address 0x6>)
at failures.c:523
ctx = {
type = LOG_TYPE_PANIC,
exit_status = 0,
timestamp = 0x0,
timestamp_usecs = 0,
log_prefix = 0x0,
log_prefix_type_pos = 0
}
args = {{
gp_offset = 40,
fp_offset = 48,
overflow_arg_area = 0x7f7ffffcddf0,
reg_save_area = 0x7f7ffffcdce0
}}
#6 0x00000e91adc0f15c in i_stream_read_memarea (stream=0xe917ead3480) at istream.c:332
_stream = 0xe917ead3400
old_size = 0
ret = 0
#7 0x00000e91adc1925f in read_more (sstream=0xe91431c4800) at istream-seekable.c:149
ret = <optimized out>
size = <optimized out>
#8 0x00000e91adc19090 in read_from_buffer (sstream=0xe91431c4800, ret_r=0x7f7ffffcded8)
at istream-seekable.c:204
old_skip = <optimized out>
stream = 0xe91431c4800
size = <optimized out>
data = <optimized out>
avail_size = <optimized out>
#9 0x00000e91adc1856d in i_stream_seekable_read (stream=0xe91431c4800) at istream-seekable.c:265
sstream = 0xe91431c4800
ret = 16019855444480
size = <optimized out>
data = <optimized out>
pos = <optimized out>
#10 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91431c4880) at istream.c:313
_stream = 0xe91431c4800
old_size = 0
ret = <optimized out>
#11 0x00000e91adc16bbc in i_stream_limit_read (stream=0xe91e9ccca00) at istream-limit.c:49
lstream = 0xe91e9ccca00
pos = 16017421909770
ret = <optimized out>
left = <optimized out>
#12 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91e9ccca80) at istream.c:313
_stream = 0xe91e9ccca00
old_size = 0
ret = <optimized out>
#13 0x00000e91adc0f79c in i_stream_read_copy_from_parent (istream=<optimized out>) at istream.c:387
stream = 0xe91e9ccc000
pos = <optimized out>
ret = <optimized out>
#14 0x00000e918e9729fa in i_stream_mail_read (stream=0xe91e9ccc000) at istream-mail.c:115
mstream = 0xe91e9ccc000
ret = <optimized out>
size = <optimized out>
#15 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91e9ccc080) at istream.c:313
_stream = 0xe91e9ccc000
old_size = 0
ret = <optimized out>
#16 0x00000e91adc104f5 in i_stream_read (stream=0xe91e9ccc080) at istream.c:271
_stream = 0xe91e9ccc000
ret = <optimized out>
#17 i_stream_read_data (stream=0xe91e9ccc080, data_r=0x7f7ffffce110, size_r=0x7f7ffffce100, threshold=1)
at istream.c:747
read_more = false
ret = <error reading variable ret (Cannot access memory at address 0x0)>
#18 0x00000e91adbd6a18 in i_stream_read_bytes (stream=0x0, data_r=<optimized out>,
size_r=<optimized out>, wanted=<optimized out>) at ../../src/lib/istream.h:214
No locals.
#19 message_parse_header_next (ctx=0xe9183e1b180, hdr_r=0x7f7ffffce1d0) at message-header-parser.c:85
skip = <error reading variable skip (Cannot access memory at address 0x0)>
line = 0xe9183e1b180
colon_pos = 4294967295
no_newline = <error reading variable no_newline (Cannot access memory at address 0x0)>
crlf_newline = <error reading variable crlf_newline (Cannot access memory at address 0x0)>
continued = false
size = 0
msg = 0xe91adafee50 <uchar_nul> ""
startpos = 0
continues = <error reading variable continues (Cannot access memory at address 0x0)>
i = <optimized out>
parse_size = <optimized out>
ret = <optimized out>
last_crlf = <optimized out>
last_no_newline = <optimized out>
#20 0x00000e91adbceef2 in read_header (mstream=0xe91e9cc6000) at istream-header-filter.c:195
highwater_offset = <optimized out>
max_buffer_size = 8192
hdr = 0x0
hdr_ret = <optimized out>
ret = <optimized out>
ret2 = <optimized out>
#21 i_stream_header_filter_read (stream=0xe91e9cc6000) at istream-header-filter.c:450
mstream = 0xe91e9cc6000
v_offset = <optimized out>
ret = <optimized out>
#22 0x00000e91adc0f0a4 in i_stream_read_memarea (stream=0xe91e9cc6080) at istream.c:313
_stream = 0xe91e9cc6000
old_size = 0
ret = <optimized out>
#23 0x00000e91adc104f5 in i_stream_read (stream=0xe91e9cc6080) at istream.c:271
_stream = 0xe91e9cc6000
ret = <optimized out>
#24 i_stream_read_data (stream=0xe91e9cc6080, data_r=0x7f7ffffce2c0, size_r=0x7f7ffffce2c8, threshold=0)
at istream.c:747
read_more = false
ret = <error reading variable ret (Cannot access memory at address 0x0)>
#25 0x00000e91adbdc07b in i_stream_read_bytes (stream=0xe91e9cc6080, data_r=<optimized out>,
size_r=<optimized out>, wanted=<error reading variable: Cannot access memory at address 0x1>)
at ../../src/lib/istream.h:214
No locals.
#26 message_get_header_size (input=0xe91e9cc6080, hdr=0x7f7ffffce328, has_nuls_r=0x7f7ffffce3b7)
at message-size.c:19
size = 0
msg = 0xe91adafee50 <uchar_nul> ""
startpos = <error reading variable startpos (Cannot access memory at address 0x0)>
missing_cr_count = <error reading variable missing_cr_count (Cannot access memory at address 0x0)>
ret = <optimized out>
i = <optimized out>
#27 0x00000e8f25e767d9 in imap_msgpart_get_partial_header (mail=0xe91e9cc4848,
mail_input=<optimized out>, msgpart=0xe91c92a2048, virtual_size_r=<optimized out>,
result_r=0x7f7ffffce408, have_crlfs_r=<optimized out>) at imap-msgpart.c:401
hdr_size = {
physical_size = 0,
virtual_size = 0,
lines = 0
}
hdr_fields = 0xe91c92a21f8
hdr_count = <optimized out>
input = 0xe91e9cc6080
has_nuls = false
#28 imap_msgpart_open_normal (mail=<optimized out>, msgpart=0xe91c92a2048, part=<optimized out>,
virtual_size_r=<optimized out>, result_r=0x7f7ffffce408, have_crlfs_r=<optimized out>)
at imap-msgpart.c:637
hdr_size = {
physical_size = 0,
virtual_size = 0,
lines = 0
}
body_size = {
physical_size = 0,
virtual_size = 0,
lines = 0
}
input = <optimized out>
unknown_crlfs = <error reading variable unknown_crlfs (Cannot access memory at address 0x0)>
part_size = <error reading variable part_size (Cannot access memory at address 0x0)>
#29 imap_msgpart_open (mail=<optimized out>, msgpart=0xe91c92a2048, result_r=0x7f7ffffce408)
at imap-msgpart.c:706
part = <optimized out>
ret = <optimized out>
virtual_size = 1
binary = <optimized out>
have_crlfs = <optimized out>
#30 0x00000e8f25e672ff in fetch_body_msgpart (ctx=0xe9159845368, mail=<optimized out>,
body=0xe91e9cb4398) at imap-fetch-body.c:184
result = {
input = 0x0,
size = 0,
size_field = (unknown: 0),
binary_decoded_input_has_nuls = false
}
str = <optimized out>
#31 0x00000e8f25e65837 in imap_fetch_more_int (ctx=0xe9159845368, cancel=false) at imap-fetch.c:562
_data_stack_cur_id = <optimized out>
client = <optimized out>
ret = <optimized out>
handlers = 0xe91e9cb4020
count = 5
#32 0x00000e8f25e6552c in imap_fetch_more (ctx=0xe9159845368, cmd=0xe9159845048) at imap-fetch.c:617
ret = <optimized out>
#33 0x00000e8f25e55521 in cmd_fetch (cmd=0xe9159845048) at cmd-fetch.c:337
qresync_args = {
qresync_sample_seqset = 0xe9159845368,
qresync_sample_uidset = 0xe9159845020
}
args = <optimized out>
send_vanished = <optimized out>
client = 0xe9159845848
messageset = <optimized out>
search_args = 0x0
ret = <optimized out>
ctx = 0x0
next_arg = <optimized out>
list_arg = <optimized out>
#34 0x00000e8f25e62d12 in command_exec (cmd=0xe9159845048) at imap-commands.c:201
hook = <optimized out>
#35 0x00000e8f25e61576 in client_command_input (cmd=0xe9159845048) at imap-client.c:1204
client = 0xe9159845848
command = <optimized out>
tag = <optimized out>
ret = <optimized out>
name = <optimized out>
#36 0x00000e8f25e61682 in client_command_input (cmd=0xe9159845048) at imap-client.c:1269
client = 0xe9159845848
command = <optimized out>
tag = <optimized out>
ret = <optimized out>
name = <optimized out>
#37 0x00000e8f25e5ffb4 in client_handle_next_command (client=0xe9159845848, remove_io_r=<optimized out>)
at imap-client.c:1313
No locals.
#38 client_handle_input (client=0xe9159845848) at imap-client.c:1327
_data_stack_cur_id = <optimized out>
handled_commands = false
ret = <optimized out>
remove_io = <optimized out>
#39 0x00000e8f25e5e755 in client_input (client=0xe9159845848) at imap-client.c:1371
output = 0xe92088000a0
bytes = 218
cmd = <optimized out>
#40 0x00000e91adc1c851 in io_loop_call_io (io=0xe91eb5d0b00) at ioloop.c:714
ioloop = 0xe9162373d00
t_id = 0
#41 0x00000e91adc1f84c in io_loop_handler_run_internal (ioloop=0xe9162373d00) at ioloop-kqueue.c:164
tv = {
tv_sec = 3,
tv_usec = 410626
}
ts = {
tv_sec = 3,
tv_nsec = 410626000
}
ctx = 0xe9171193980
msecs = <optimized out>
events_count = <optimized out>
events = <optimized out>
ret = <optimized out>
i = <optimized out>
io = 0xe91eb5d0b00
#42 0x00000e91adc1cfd9 in io_loop_handler_run (ioloop=0xe9162373d00) at ioloop.c:766
No locals.
#43 0x00000e91adc1cce8 in io_loop_run (ioloop=0xe9162373d00) at ioloop.c:739
No locals.
#44 0x00000e91adb77655 in master_service_run (service=0xe9193c39600, callback=0x6)
at master-service.c:853
No locals.
#45 0x00000e8f25e70dd1 in main (argc=1, argv=<optimized out>) at main.c:532
set_roots = {0xe91adc66270 <smtp_submit_setting_parser_info>,
0xe8f25e7e310 <imap_setting_parser_info>, 0x0}
login_set = {
auth_socket_path = 0xe9136774490 "HEADER.FIELDS (DATE FROM SENDER SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL)",
postlogin_socket_path = 0x0,
postlogin_timeout_secs = 60,
callback = 0xe8f25e70fc0 <login_client_connected>,
failure_callback = 0xe8f25e712b0 <login_client_failed>,
request_auth_token = true
}
username = <optimized out>
storage_service_flags = <optimized out>
service_flags = <optimized out>
auth_socket_path = <optimized out>
c = <optimized out>
error = 0x7f7ffffcea18 "]\353\374\377\177\177"
(gdb)
More information about the dovecot
mailing list