[Dovecot] SIGBART/SIGSEGV while SELECTing virtual folder

Lars Noschinski lars at public.noschinski.de
Sun Oct 26 12:49:44 EET 2008


Hello!

* Timo Sirainen <tss at iki.fi> [08-10-26 11:37]:
>On Sat, 2008-10-25 at 20:38 +0200, Lars Noschinski wrote:
>
>> Thanks! I was just looking at the repository, while you were committing
>> these fixes ;) But these fixes uncovered another bug. I can SELECT now,
>> but FETCH fails:
>
>Fixed.

Thanks again. Now we get to another assertion:

---------------------------------------------------------------------
Oct 26 11:40:54 vertikal EXT(lars): : Panic: file index-mail-headers.c: line 733 (index_mail_get_header_stream): assertion failed: (_headers->box == _mail->box)
Oct 26 11:40:54 vertikal EXT(lars): : Raw backtrace: /tmp/dd1/libexec/dovecot/imap [0x80eae61] -> /tmp/dd1/libexec/dovecot/imap(i_syslog_fatal_handler+0x34) [0x80eaf34] -> /tmp/dd1/libexec/dovecot/imap [0x80ea879] -> /tmp/dd1/libexec/dovecot/imap(index_mail_get_header_stream+0x107) [0x80a1cc7] -> /tmp/dd1/lib/dovecot/imap/lib20_virtual_plugin.so [0xb7fbdca3] -> /tmp/dd1/libexec/dovecot/imap [0x806c6f1] -> /tmp/dd1/libexec/dovecot/imap(imap_fetch_more+0x145) [0x8069c55] -> /tmp/dd1/libexec/dovecot/imap(cmd_fetch+0x343) [0x80611b3] -> /tmp/dd1/libexec/dovecot/imap [0x806758c] -> /tmp/dd1/libexec/dovecot/imap [0x8067629] -> /tmp/dd1/libexec/dovecot/imap(client_handle_input+0x1d) [0x8067c2d] -> /tmp/dd1/libexec/dovecot/imap(client_input+0x63) [0x80680e3] -> /tmp/dd1/libexec/dovecot/imap(io_loop_handler_run+0xe0) [0x80f3360] -> /tmp/dd1/libexec/dovecot/imap(io_loop_run+0x20) [0x80f27f0] -> /tmp/dd1/libexec/dovecot/imap(main+0x59d) [0x806f58d] -> /lib/libc.so.6(__libc_start_main+0xe5) [0xb7e88455] -> /tmp/dd1/libexec/
---------------------------------------------------------------------
% ./sbin/dovecot --exec-mail ext /usr/bin/gdb ./libexec/dovecot/imap
GNU gdb 6.8-debian
Copyright (C) 2008 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 "i486-linux-gnu"...
(gdb) run
Starting program: /tmp/dd1/libexec/dovecot/imap
* PREAUTH [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT THREAD=REFERENCES MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH SEARCHRES WITHIN CONTEXT=SEARCH] Logged in as lars
. SELECT virtual/all
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft Old)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft Old \*)] Flags permitted.
* 74171 EXISTS
* 0 RECENT
* OK [UNSEEN 10841] First unseen.
* OK [UIDVALIDITY 1225017599] UIDs valid
* OK [UIDNEXT 74172] Predicted next UID
* OK [HIGHESTMODSEQ 1]
. OK [READ-WRITE] Select completed.
a0060 FETCH 1:74142 (UID FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL)])

Program received signal SIGABRT, Aborted.
0xb7e9c556 in raise () from /lib/libc.so.6
(gdb) bt full
#0  0xb7e9c556 in raise () from /lib/libc.so.6
No symbol table info available.
#1  0xb7e9dd78 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x080eae75 in default_fatal_finish (type=<value optimized out>, status=0) at failures.c:150
         backtrace = 0x92006c0 "/tmp/dd1/libexec/dovecot/imap [0x80eae61] -> /tmp/dd1/libexec/dovecot/imap(i_syslog_fatal_handler+0x34) [0x80eaf34] -> /tmp/dd1/libexec/dovecot/imap [0x80ea879] -> /tmp/dd1/libexec/dovecot/imap(index_"...
#3  0x080eaf34 in i_syslog_fatal_handler (type=LOG_TYPE_PANIC, status=0, fmt=0x80fff8c "file %s: line %d (%s): assertion failed: (%s)",
     args=0xbfce5a84 "9\200\020\b�\002") at failures.c:308
No locals.
#4  0x080ea879 in i_panic (format=0x80fff8c "file %s: line %d (%s): assertion failed: (%s)") at failures.c:197
No locals.
#5  0x080a1cc7 in index_mail_get_header_stream (_mail=0x9d8b450, _headers=0x9885050, stream_r=0x920c7cc) at index-mail-headers.c:733
         input = (struct istream *) 0x0
         dest = <value optimized out>
         __PRETTY_FUNCTION__ = "index_mail_get_header_stream"
#6  0xb7fbdca3 in virtual_mail_get_header_stream (mail=0x9b5c038, headers=0x9885050, stream_r=0x920c7cc) at virtual-mail.c:252
         backend_headers = (struct mailbox_header_lookup_ctx *) 0x99823e0
         ret = <value optimized out>
#7  0x0806c6f1 in fetch_body_header_fields (ctx=0x920c778, mail=0x6, body=0x920ca98) at imap-fetch-body.c:451
         size = {physical_size = 578317383984110376, virtual_size = 155418768, lines = 89}
         old_offset = <value optimized out>
#8  0x08069c55 in imap_fetch_more (ctx=0x920c778) at imap-fetch.c:479
         ret = <value optimized out>
         __PRETTY_FUNCTION__ = "imap_fetch_more"
#9  0x080611b3 in cmd_fetch (cmd=0x920c730) at cmd-fetch.c:218
         client = (struct client *) 0x920c4b0
         ctx = (struct imap_fetch_context *) 0x920c778
         args = (const struct imap_arg *) 0x92117b0
         search_args = (struct mail_search_args *) 0x9dd2a30
         messageset = <value optimized out>
         ret = <value optimized out>
#10 0x0806758c in client_command_input (cmd=0x920c730) at client.c:592
         client = (struct client *) 0x920c4b0
         command = <value optimized out>
         __PRETTY_FUNCTION__ = "client_command_input"
#11 0x08067629 in client_command_input (cmd=0x920c730) at client.c:641
         client = (struct client *) 0x920c4b0
         command = <value optimized out>
         __PRETTY_FUNCTION__ = "client_command_input"
#12 0x08067c2d in client_handle_input (client=0x920c4b0) at client.c:682
         _data_stack_cur_id = 3
         ret = <value optimized out>
         remove_io = <value optimized out>
         handled_commands = false
#13 0x080680e3 in client_input (client=0x920c4b0) at client.c:737
         cmd = <value optimized out>
         output = (struct ostream *) 0x920c65c
         bytes = <value optimized out>
         __PRETTY_FUNCTION__ = "client_input"
#14 0x080f3360 in io_loop_handler_run (ioloop=0x9208ab8) at ioloop-epoll.c:203
         ctx = (struct ioloop_handler_context *) 0x9208bb0
         event = (const struct epoll_event *) 0x9208bf0
         list = (struct io_list *) 0x920c6d8
         io = (struct io_file *) 0x920c6b8
         tv = {tv_sec = 1799, tv_usec = 999297}
         t_id = 2
         msecs = <value optimized out>
         ret = 1
         i = 0
         j = 0
         call = <value optimized out>
#15 0x080f27f0 in io_loop_run (ioloop=0x9208ab8) at ioloop.c:320
No locals.
#16 0x0806f58d in main (argc=Cannot access memory at address 0x2598
) at main.c:309
No locals.
(gdb)
---------------------------------------------------------------------

>> This message does not occur, if use "*" instead of "mbox/*" as mailbox
>> pattern.
>
>Yes, because "*" matches only your maildirs and you don't have
>non-selectable maildirs. I added a note about this
>one-namespace-only-per-wildcard to
>http://wiki.dovecot.org/Plugins/Virtual

Ah, ok. I already suspected something like that.

  - Lars.


More information about the dovecot mailing list