[Dovecot] A few dovecot 1.1 bugs - sort, flag reset and etc.

wenjie zheng wenjie.zheng at gmail.com
Sat Aug 4 18:25:25 EEST 2007


I installed dovecot 1.1 on our system yesterday, and found a few bugs so far.

Here is the list:

BUG #1: can't access some folders
Details:
a select "RSS.A List Apart"
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $$$INDEXED###)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft
$$$INDEXED### \*)] Flags permitted.
* 52 EXISTS
* 0 RECENT
* OK [UNSEEN 50] First unseen.
* OK [UIDVALIDITY 1166644056] UIDs valid
* OK [UIDNEXT 65] Predicted next UID
a OK [READ-WRITE] Select completed.
a SORT (DATE) UTF-8 UNSEEN
imap(jing at webmail.us <javascript:void(0);>): Panic: file
mail-cache-lookup.c: line 70: unreached
imap(jing at webmail.us <javascript:void(0);>): Error: Raw backtrace:
/usr/libexec/dovecot/imap [0x80be647] -> /usr/libexec/dovecot/imap
[0x80be82f] -> /usr/libexec/dovecot/imap [0x809849b] ->
/usr/libexec/dovecot/imap(mail_cache_lookup_iter_init+0x6c)
[0x809857c] -> /usr/libexec/dovecot/imap(mail_cache_lookup_headers+0xf7)
[0x8098c77] -> /usr/libexec/dovecot/imap [0x8091ac7] ->
/usr/libexec/dovecot/imap(index_mail_get_first_header+0x17)
[0x8091dff] -> /usr/libexec/dovecot/imap(mail_get_first_header+0x12)
[0x80b054a] -> /usr/libexec/dovecot/imap [0x8093b5a] ->
/usr/libexec/dovecot/imap [0x8093cee] -> /usr/libexec/dovecot/imap
[0x8093eff] -> /usr/libexec/dovecot/imap(bsearch_insert_pos+0x40)
[0x80bd794] -> /usr/libexec/dovecot/imap [0x8094660] ->
/usr/libexec/dovecot/imap [0x8094759] ->
/usr/libexec/dovecot/imap(index_sort_list_finish+0x2f) [0x8094a27] ->
/usr/libexec/dovecot/imap(index_storage_search_next_nonblock+0x119)
[0x8093819] -> /usr/libexec/dovecot/imap(mailbox_search_next_nonblock+0x17)
[0x80b21f3] -> /usr/libexec/dovecot/imap(mailbox_search_next+0x1d)
[0x80b21c5] -> /usr/libexec/dovecot/imap(imap_sort+0xb5) [0x8064529]
-> /usr/libexec/dovecot/imap(cmd_sort+0x10e) [0x805e356] ->
/usr/libexec/dovecot/imap [0x805fe82] -> /usr/libexec/dovecot/imap
[0x805fda1] -> /usr/libexec/dovecot/imap [0x805ff11] ->
/usr/libexec/dovecot/imap(_client_input+0x56) [0x805ffce] ->
/usr/libexec/dovecot/imap(io_loop_handler_run+0x100) [0x80c3e38] ->
/usr/libexec/dovecot/imap(io_loop_run+0x2d) [0x8069339] ->
/usr/libexec/dovecot/imap(main+0x64) [0x8068d30] ->
/lib/tls/libc.so.6(__libc_start_main+0xda) [0x73978a]

Program received signal SIGABRT, Aborted.
0x0074bcdf in raise () from /lib/tls/libc.so.6
(gdb) bt full
#0  0x0074bcdf in raise () from /lib/tls/libc.so.6
No symbol table info available.
#1  0x0074d4e5 in abort () from /lib/tls/libc.so.6
No symbol table info available.
#2  0x080be666 in default_panic_handler (format=0x80cdbdd "file %s:
line %d: unreached", args=0xbfff9cb4 "MP\r\bF") at failures.c:136
        backtrace = 0x8d2ac38 "/usr/libexec/dovecot/imap [0x80be647]
-> /usr/libexec/dovecot/imap [0x80be82f] -> /usr/libexec/dovecot/imap
[0x809849b] -> /usr/libexec/dovecot/imap(mail_cache_lookup_iter_init+0x6c)
[0x809857c] -> /u"...
#3  0x080be82f in i_panic (format=0x80cdbdd "file %s: line %d:
unreached") at failures.c:213
No locals.
#4  0x0809849b in mail_cache_lookup_offset (cache=0x8d4a9b8,
view=0x8d4d460, seq=18, offset_r=0x0) at mail-cache-lookup.c:70
        map = (struct mail_index_map *) 0x8d4a898
        data = (const void *) 0x8d4f4a4
        idx = 148024040
        i = -1073767072
        ret = 0
#5  0x0809857c in mail_cache_lookup_iter_init (view=0x8d4d558, seq=18,
ctx_r=0xbfff9d60) at mail-cache-lookup.c:125
        ctx = (struct mail_cache_lookup_iterate_ctx *) 0xbfff9d60
        ret = 0
#6  0x08098c77 in mail_cache_lookup_headers (view=0x8d4d558,
dest=0x8d52038, seq=18, field_idxs=0xbfff9de4, fields_count=1) at
mail-cache-lookup.c:470
        cache = (struct mail_cache *) 0x8d4a9b8
        iter = {view = 0x8d4d558, remap_counter = 0, seq = 18, rec =
0x0, pos = 0, rec_size = 0, offset = 0, stop = 0, failed = 0,
appends_checked = 0}
        field = {field_idx = 12, data = 0x8d4dbc0, size = 0}
        ctx = {view = 0x8d4d558, lines = {arr = {buffer = 0x8d2aae8,
element_size = 8}, v = 0x8d2aae8, v_modifiable = 0x8d2aae8}}
        lines = (struct header_lookup_line *) 0x1
        p = (const unsigned char *) 0x0
        start = (const unsigned char *) 0xbfff9d60 "XÕÔ\b"
        end = (const unsigned char *) 0x42a5 <Address 0x42a5 out of bounds>
        field_state = (uint8_t *) 0x8d2aab8 ""
        i = 1
        max_field = 10
        hdr_size = 3221200208
        want = 1 '\001'
        buf = (buffer_t *) 0xbfff9d50
        ret = 0
#7  0x08091ac7 in index_mail_get_raw_headers (mail=0x8d3d3b8,
field=0x80ce56b "Subject") at index-mail-headers.c:568
        headers = {0xbfff9e18 "8\236ÿ¿J\005\v\b¸ÓÓ\bkå\f\b", 0x809059c
"\213\216(\001"}
        value = 0x0
        headers_ctx = (struct mailbox_header_lookup_ctx *) 0x8d3d3b8
        data = (unsigned char *) 0x8d4b1a8 "h³Ô\b
*Ó\b\224X\t\b¬X\t\bÐ\200\006\b\204Å\006\b°2\a\b¤3\a\büÇ\006\bÌÈ\006\bTÉ\006\b"
        field_idx = 10
        dest = (string_t *) 0x8d52038
        i = 148100024
        len = 148100132
        ret = 148156840
        header_values = {arr = {buffer = 0xac, element_size =
3221200392}, v = 0xac, v_modifiable = 0xac}
#8  0x08091dff in index_mail_get_first_header (_mail=0x8d3d3b8,
field=0x80ce56b "Subject", decode_to_utf8=false) at
index-mail-headers.c:673
        list = (const char * const *) 0x6
#9  0x080b054a in mail_get_first_header (mail=0x0, field=0x80ce56b
"Subject") at mail.c:96
No locals.
#10 0x08093b5a in sort_header_get (sort_type=MAIL_SORT_SUBJECT,
mail=0x8d3d3b8, seq=18) at index-sort.c:180
        str = 0x8d3d3b8 "¨±Ô\b8ÇÔ\b\022"
        buf = (string_t *) 0x20
#11 0x08093cee in sort_node_cmp_type (ctx=0x80e62e0,
sort_program=0x8d3d334, n1=0xbfff9f20, n2=0x8d3d850) at
index-sort.c:223
        sort_type = MAIL_SORT_SUBJECT
        str1 = 0x8d2aa50 "NEVER USE A WARNING WHEN YOU MEAN UNDO"
        str2 = 0x0
        time1 = 32
        time2 = 6
        size1 = 148023856
        size2 = 73276437037062
        ret = 148023888
#12 0x08093eff in sort_node_cmp_no_sort_id (p1=0xbfff9f20,
p2=0x8d3d850) at index-sort.c:309
No locals.
---Type <return> to continue, or q <return> to quit---
#13 0x080bd794 in bsearch_insert_pos (key=0xbfff9f20, base=0x8d3d798,
nmemb=46, size=8, cmp=0x8093ee0 <sort_node_cmp_no_sort_id>,
idx_r=0xbfff9f1c) at bsearch-insert-pos.c:20
        p = (const void *) 0x0
        idx = 23
        left_idx = 0
        right_idx = 46
        ret = 0
#14 0x08094660 in index_sort_headers (program=0x8d3d330, last_seq=52)
at index-sort.c:590
        node = {seq = 47, sort_id = 0}
        count = 46
        idx = 15
#15 0x08094759 in index_sort_build (program=0x8d3d330, last_seq=52) at
index-sort.c:637
        ibox = (struct index_mailbox *) 0x8d4b1a8
        node = {seq = 1, sort_id = 0}
        data = (const void *) 0x0
        i = 6
#16 0x08094a27 in index_sort_list_finish (program=0x8d3d330) at index-sort.c:743
No locals.
#17 0x08093819 in index_storage_search_next_nonblock (_ctx=0x8d3d2c8,
mail=0x8d50440, tryagain_r=0xbfffa01b) at index-search.c:1058
        box = (struct mailbox *) 0x8d4b1a8
        count = 12
        ret = 0
#18 0x080b21f3 in mailbox_search_next_nonblock (ctx=0x6,
mail=0x8d50440, tryagain_r=0xbfffa01b) at mail-storage.c:598
No locals.
#19 0x080b21c5 in mailbox_search_next (ctx=0x8d3d2c8, mail=0x8d50440)
at mail-storage.c:589
        tryagain = false
        ret = 0
#20 0x08064529 in imap_sort (cmd=0x8d35f40, charset=0x8d3a2e0 "UTF-8",
args=0x8d4b7b0, sort_program=0x8d292c0) at imap-sort.c:90
        client = (struct client *) 0x8d345d0
        wanted_headers = {0x80ce56b "Subject", 0x0}
        wanted_fields = 0
        search_ctx = (struct mail_search_context *) 0x8d3d2c8
        t = (struct mailbox_transaction_context *) 0x8d4c738
        headers_ctx = (struct mailbox_header_lookup_ctx *) 0x8d3c9b0
        mail = (struct mail *) 0x8d50440
        str = (string_t *) 0x8d292c0
        written = false
        ret = 148070208
#21 0x0805e356 in cmd_sort (cmd=0x8d35f40) at cmd-sort.c:134
        client = (struct client *) 0x8d345d0
        sargs = (struct mail_search_arg *) 0x0
        sorting = {MAIL_SORT_SUBJECT, MAIL_SORT_END, 3221201096,
7656935, 148070264, 135062878, 20, 18}
        args = (const struct imap_arg *) 0x8d3a1e8
        args_count = 0
        pool = 0x8d4b798
        error = 0x0
        charset = 0x8d3a2e0 "UTF-8"
#22 0x0805fe82 in client_command_input (cmd=0x8d35f40) at client.c:488
        client = (struct client *) 0x8d345d0
#23 0x0805fda1 in client_command_input (cmd=0x8d35f40) at client.c:545
        client = (struct client *) 0x8d345d0
#24 0x0805ff11 in client_handle_next_command (client=0x8d345d0) at client.c:556
        size = 27
#25 0x0805ffce in _client_input (client=0x8d345d0) at client.c:616
        cmd = (struct client_command_context *) 0x2
        ret = 2
#26 0x080c3e38 in io_loop_handler_run (ioloop=0x8d31a68) at ioloop-poll.c:200
        ctx = (struct ioloop_handler_context *) 0x8d31aa8
        pollfd = (struct pollfd *) 0x2
        tv = {tv_sec = 4, tv_usec = 199377}
        io = (struct io_file *) 0x8d340c8
        t_id = 2
        msecs = 0
        ret = 0
---Type <return> to continue, or q <return> to quit---
        call = 165
#27 0x08069339 in io_loop_run (ioloop=0x8d31a68) at ../../src/lib/ioloop.c:351
No locals.
#28 0x08068d30 in main (argc=1, argv=0xbfffa264, envp=0xbfffa26c) at main.c:301
No locals.



BUG #2: Some flags are reset after they were set a while ago,
like messages that has been read are randomly becoming unread again.

Bug #3: CRLF in the email file on disk is shown like "=0A", which
causes display problem in wireless access.
=0A
=0A
=0A
=0A
=0AHey all,
=0A=C2=A0



Thanks,
Wenjie


More information about the dovecot mailing list