[Dovecot] pre-1.0.rc27: Index and mbox fixes

Dan Price dp at eng.sun.com
Tue Mar 13 20:32:50 EET 2007


On Sun 11 Mar 2007 at 02:32PM, Dan Price wrote:
> On Sun 11 Mar 2007 at 11:04PM, Timo Sirainen wrote:
> > On Sun, 2007-03-11 at 20:54 +0000, Chris Wakelin wrote:
> > > 
> > > Timo Sirainen wrote:
> > > > On Sun, 2007-03-11 at 17:23 +0000, Chris Wakelin wrote:
> > > >> It crashes at login (using PAM via pam_ldap to Active Directory). And
> > > >> no, it was the wrong core file <sheepish grin>. Here's the proper
> > > >> backtrace (with "password" instead of what I actually used ;) )
> > > > 
> > > > Well, this one is also broken. Some things that point to an invalid
> > > > backtrace:
> > > 
> > > <sheepish grin^2> OK this one's actually the right core file *and* the
> > > right binary (the other was from dovecot-1.0-beta7.)
> > 
> > Yes, this one was correct :) This should fix it:
> > http://dovecot.org/list/dovecot-cvs/2007-March/008096.html
> > 
> > I'll build also a new snapshot. I guess I'll delay rc27 until tomorrow
> > anyway.
> 
> I've put up the pre-rc27 onto our box and so far things are looking
> good.  However, it's the weekend, and we don't have many users busy,
> and no new migrations.  If you can wait until Tuesday afternoon (Pacific
> time) I can let you know how it survives Monday's abuse, and the
> migration of some more users on Monday night (which should hopefully
> validate the endianness bugfix).  I'll go remove the index and cache
> removal stuff from our migration script.

Timo,

Since deploying pre-rc27 over the weekend we've had one core dump (just
one!), this morning.  Here is the message and backtrace.  Thanks for
working so hard on the IMAP stability.

        -dp

dovecot: Mar 13 07:14:34 Error: IMAP(foobar): file mail-cache.c: line 411 (mai
l_cache_lock): assertion failed: (!cache->locked)
dovecot: Mar 13 07:14:34 Error: IMAP(foobar): Raw backtrace: 0x80b9467 -> 0x80
98220 -> 0x809af69 -> 0x809b016 -> 0x80a3982 -> 0x80a4314 -> 0x80a2c31 -> 0x8085
3fd -> 0x807dd19 -> 0x80adc7e -> 0x806cb85 -> 0x8067df4 -> 0x806bb66 -> 0x806baf
a -> 0x806bcb4 -> 0x80beb09 -> 0x80be541 -> 0x8072aec -> 0x806710c
dovecot: Mar 13 07:14:34 Error: child 440461 (imap) killed with signal 6

---

(gdb) bt full
#0  0xfee505a7 in _lwp_kill () from /lib/libc.so.1
No symbol table info available.
#1  0xfee4d71b in thr_kill () from /lib/libc.so.1
No symbol table info available.
#2  0xfee06502 in raise () from /lib/libc.so.1
No symbol table info available.
#3  0xfede4b8d in abort () from /lib/libc.so.1
No symbol table info available.
#4  0x080b9920 in i_internal_panic_handler (fmt=0x0, 
    args=0x8047564 "bÛ\f\b\233\001") at failures.c:403
        backtrace = 0x80eabd0 "0x80b9467 -> 0x8098220 -> 0x809af69 -> 0x809b016 
-> 0x80a3982 -> 0x80a4314 -> 0x80a2c31 -> 0x80853fd -> 0x807dd19 -> 0x80adc7e ->
 0x806cb85 -> 0x8067df4 -> 0x806bb66 -> 0x806bafa -> 0x806bcb4 -> 0x80b"...
#5  0x080b9467 in i_panic (
    format=0x80d4234 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:183
No locals.
#6  0x08098220 in mail_cache_lock (cache=0xfee9b000) at mail-cache.c:469
        view = (struct mail_index_view *) 0x0
        ext = (const struct mail_index_ext *) 0x4
        i = 134510040
        ret = 135174244
        __PRETTY_FUNCTION__ = "mail_cache_lock"
#7  0x0809af69 in mail_cache_handler_init (ctx_r=0x80475d8, cache=0x8101238)
    at mail-cache-sync-update.c:40
        ctx = (struct mail_cache_sync_context *) 0x80fd1f8
        ret = 0
#8  0x0809b016 in mail_cache_expunge_handler (sync_ctx=0xfee505a7, seq=413, 
    data=0x8118128, context=0x80f6964) at mail-cache-sync-update.c:85
        view = (struct mail_index_view *) 0x810c228
        ctx = (struct mail_cache_sync_context *) 0x80fd1f8
        cache = (struct mail_cache *) 0x8101238
        cache_file_seq = 135318000
        ret = 0
#9  0x080a3982 in mail_index_sync_record (ctx=0x8047730, hdr=0x810ee54, 
    data=0xfed36f08) at mail-index-sync-update.c:306
        rec = (const struct mail_transaction_expunge *) 0xfed36f08
        end = (const struct mail_transaction_expunge *) 0xfed36f10
        ret = 135312872
        __PRETTY_FUNCTION__ = "mail_index_sync_record"
#10 0x080a4314 in mail_index_sync_update_index (sync_ctx=0x810c228, 
    sync_only_external=false) at mail-index-sync-update.c:895
        rec = (const struct mail_index_record *) 0x0
        index = (struct mail_index *) 0x8107c28
        view = (struct mail_index_view *) 0x810c228
        map = (struct mail_index_map *) 0x81010e0
        sync_map_ctx = {view = 0x810c228, cur_ext_id = 2, 
  ext_intro_seq = 33554433, ext_intro_offset = 24308, ext_intro_size = 40, 
  expunge_handlers = {buffer = 0x811b658, element_size = 12}, 
  extra_contexts = {buffer = 0x81117f0, element_size = 4}, 
  type = MAIL_INDEX_SYNC_HANDLER_FILE, sync_handlers_initialized = 0, 
  expunge_handlers_set = 1, expunge_handlers_used = 1, cur_ext_ignore = 0, 
  unreliable_flags = 0, sync_only_external = 0}
        thdr = (const struct mail_transaction_header *) 0x810ee54
        data = (const void *) 0xfed36f08
        old_lock_id = 1
        i = 0
        first_append_uid = 66571
        ret = 1
        had_dirty = false
        skipped = false
        check_ext_offsets = false
        __PRETTY_FUNCTION__ = "mail_index_sync_update_index"
#11 0x080a2c31 in mail_index_sync_commit (_ctx=0x8047804)
    at mail-index-sync.c:669
        ctx = (struct mail_index_sync_ctx *) 0x80fd068
        index = (struct mail_index *) 0x8107c28
        hdr = (const struct mail_index_header *) 0x810823c
        seq = 33554433
        offset = 28448
        ret = 0
#12 0x080853fd in mbox_sync (mbox=0x8100bf0, flags=25) at mbox-sync.c:1816
        expunged = false
        index_sync_ctx = (struct mail_index_sync_ctx *) 0x80fd068
        sync_view = (struct mail_index_view *) 0x810c228
        sync_ctx = {mbox = 0x8100bf0, flags = 25, input = 0x8100a44, 
  file_input = 0x810c544, write_fd = 7, orig_mtime = 1173795269, 
  orig_size = 22378926, index_sync_ctx = 0x80fd068, sync_view = 0x810c228, 
  t = 0x0, hdr = 0x810c26c, header = 0x8111f98, from_line = 0x811b680, 
  base_uid_validity = 1173290687, base_uid_last = 66570, 
  base_uid_last_offset = 252, mails = {buffer = 0x8111ac0, element_size = 52}, 
  syncs = {buffer = 0x8111868, element_size = 20}, sync_rec = {uid1 = 0, 
    uid2 = 0, type = 0, add_flags = 0 '\0', remove_flags = 0 '\0', 
    keyword_idx = 0}, mail_keyword_pool = 0x80fcee0, 
  saved_keywords_pool = 0x8101500, prev_msg_uid = 66773, next_uid = 66774, 
  idx_next_uid = 66571, seq = 1458, idx_seq = 1661, need_space_seq = 0, 
  expunged_space = 0, space_diff = 0, dest_first_mail = 0, 
  first_mail_crlf_expunged = 0, delay_writes = 0, renumber_uids = 0, 
  moved_offsets = 0}
        seq = 33554433
        offset = 28448
        lock_id = 79
        ret = 0
        changed = 1
        __PRETTY_FUNCTION__ = "mbox_sync"
#13 0x0807dd19 in mbox_transaction_commit (_t=0x8103490, flags=3)
    at mbox-transaction.c:59
        mbox_sync_flags = 0
        t = (struct mbox_transaction_context *) 0x8103490
        mbox = (struct mbox_mailbox *) 0x8100bf0
        lock_id = 0
        mbox_modified = false
        ret = 0
#14 0x080adc7e in mailbox_transaction_commit (_t=0x0, flags=3)
    at mail-storage.c:506
        t = (struct mailbox_transaction_context *) 0x0
#15 0x0806cb85 in imap_expunge (box=0x8100bf0, next_search_arg=0x0)
    at imap-expunge.c:46
        ctx = (struct mail_search_context *) 0x0
        t = (struct mailbox_transaction_context *) 0x0
        mail = (struct mail *) 0x0
        search_arg = {next = 0x0, type = SEARCH_DELETED, value = {
    subargs = 0x0, seqset = 0x0, str = 0x0}, context = 0x0, 
  hdr_field_name = 0x0, not = 0, match_always = 0, result = -1}
        failed = false
#16 0x08067df4 in cmd_close (cmd=0x80f784c) at cmd-close.c:19
        client = (struct client *) 0x80f7808
        mailbox = (struct mailbox *) 0x8100bf0
        storage = (struct mail_storage *) 0x80f7520
#17 0x0806bb66 in client_handle_input (cmd=0x80f784c) at client.c:332
        client = (struct client *) 0x80f7808
        __PRETTY_FUNCTION__ = "client_handle_input"
#18 0x0806bafa in client_handle_input (cmd=0x80f784c) at client.c:389
        client = (struct client *) 0x80f7808
        __PRETTY_FUNCTION__ = "client_handle_input"
#19 0x0806bcb4 in _client_input (context=0x80f7808) at client.c:432
        client = (struct client *) 0x80f7808
        cmd = (struct client_command_context *) 0x80f784c
        ret = 2
        __PRETTY_FUNCTION__ = "_client_input"
#20 0x080beb09 in io_loop_handler_run (ioloop=0x80f5000) at ioloop-poll.c:199
        ctx = (struct ioloop_handler_context *) 0x80f5038
        pollfd = (struct pollfd *) 0x2
        tv = {tv_sec = 0, tv_usec = 999973}
        io = (struct io *) 0x80f6418
        t_id = 2
        msecs = 0
        ret = 0
        call = true
#21 0x080be541 in io_loop_run (ioloop=0x80f5000) at ioloop.c:323
No locals.
#22 0x08072aec in main (argc=1, argv=0x8047afc, envp=0x8047b04) at main.c:287
No locals.


-- 
Daniel Price - Solaris Kernel Engineering - dp at eng.sun.com - blogs.sun.com/dp


More information about the dovecot mailing list