[Dovecot] mbox bug in 1.0.0

bhayden at umn.edu bhayden at umn.edu
Wed Aug 1 16:44:46 EEST 2007


On Jun 19 2007, bhayden at umn.edu wrote:

>On May 13 2007, Timo Sirainen wrote:
>
>>On Mon, 2007-04-23 at 13:40 -0500, bhayden at umn.edu wrote:
>>> Apr 23 13:22:41 server.umn.edu dovecot: [ID 107833 local6.error]
>>> [9073] 
>>> IMAP(USER): mbox /var/mail/user: seq=1 uid=8808 uid_broken=0 originally 
>>> needed 10 bytes, now needs 23 bytes
>>
>>Anything else than Dovecot accessing these mboxes (besides MDA)?
>
>Nope. Dovecot IMAP and deliver. 
>
>>Do you have a core file from that crash? It would show a bit more
>>information. If not, see http://dovecot.org/bugreport.html

So, I'm including a backtrace for this. Sorry if you replied earlier and I 
missed it! Please let me know what else you might need. We're seeing this 
on about three dozen inboxes (which is a very small percentage, but a large 
enough number to hear about it :) ).

(dbx) where
  [1] 0xff1c16e8(0x6, 0x0, 0xff1a4d28, 0xffffffff, 0xff1e8298, 0x6), at 
0xff1c16e8
  [2] _getutxline(0x9d8b0, 0x1, 0xb00e0, 0xa8244, 0xff1eb298, 0x0), at 
0xff140158 =>[3] i_internal_panic_handler(fmt = 0x93b88 "mbox %s: seq=%u 
uid=%u uid_broken=%d originally needed %llu bytes, now needs %u bytes", 
args = 0xffbfe7d0), line 403 in "failures.c"
  [4] i_panic(format = 0x93b88 "mbox %s: seq=%u uid=%u uid_broken=%d 
originally needed %llu bytes, now needs %u bytes", ...), line 183 in 
"failures.c"
  [5] mbox_sync_rewrite(sync_ctx = 0xffbfefd0, mail_ctx = (nil), end_offset 
= 4448ULL, move_diff = 30LL, extra_space = 4294971774ULL, first_seq = 1U, 
last_seq = 163U), line 422 in "mbox-sync-rewrite.c"
  [6] mbox_sync_do(sync_ctx = 0xffbfefd0, flags = -4198952), line 920 in 
"mbox-sync.c"
  [7] mbox_sync(mbox = 0xc99e0, flags = MBOX_SYNC_UNDIRTY), line 1873 in 
"mbox-sync.c"
  [8] mbox_storage_sync_init(box = 0xc99e0, flags = 
MAILBOX_SYNC_FLAG_FULL_READ), line 1957 in "mbox-sync.c"
  [9] mailbox_sync_init(box = 0xc99e0, flags = 
MAILBOX_SYNC_FLAG_FULL_READ), line 406 in "mail-storage.c"
  [10] imap_sync_nonselected(box = 0xc99e0, flags = 
MAILBOX_SYNC_FLAG_FULL_READ), line 196 in "imap-sync.c"
  [11] _cmd_select_full(cmd = 0xc39e4, readonly = 0), line 39 in 
"cmd-select.c"
  [12] cmd_select(cmd = 0xc39e4), line 92 in "cmd-select.c"
  [13] client_handle_input(cmd = 0xc39e4), line 335 in "client.c"
  [14] client_handle_input(cmd = 0xc39e4), line 389 in "client.c"
  [15] _client_input(context = 0xc39a0), line 432 in "client.c"
  [16] io_loop_handler_run(ioloop = 0xb9f08), line 199 in "ioloop-poll.c"
  [17] io_loop_run(ioloop = 0xb9f08), line 326 in "ioloop.c"
  [18] main(argc = -4195453, argv = 0xb0800, envp = 0xb1be4), line 290 in 
"main.c"

And in case it helps, a dump from frame [5] which is the last bit before 
the crash:

(dbx) frame 5
Current function is mbox_sync_rewrite
  422 i_panic("mbox %s: seq=%u uid=%u uid_broken=%d " (dbx) dump
 first_nonexpunged = 255U
 move_diff = 30LL
 ret = 0
 mails = 0xcd810
 idx = 0
 padding_per_mail = 20U
 first_nonexpunged_idx = 0
 expunged_space = 0
 sync_ctx = 0xffbfefd0
 extra_space = 4294971774ULL
 mail_ctx = (nil)
 dest_offset = 0
 count = 2U
 last_seq = 163U
 orig_prev_msg_uid = 1359U
 next_move_diff = 10ULL
 end_offset = 4448ULL
 __PRETTY_FUNCTION__ = "mbox_sync_rewrite"
 start_offset = 0
 offset = 4294971774ULL
 first_seq = 1U
 next_end_offset = 52ULL

>>If these happen frequently, I could also send a debug patch that writes
>>the broken mbox headers to some temp file. That with the core file would
>>provide enough information to figure out what exactly is the problem.

This is still an option, if it would help. 

-Brian Hayden
Internet Services
University of MN



More information about the dovecot mailing list