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