2.2.14 Panic in sync_expunge_range()

Timo Sirainen tss at iki.fi
Fri Oct 24 23:57:01 UTC 2014


Fixed: http://hg.dovecot.org/dovecot-2.2/rev/1886e0616ab5

On 20 Oct 2014, at 01:26, Hans Morten Kind <Kind at adm.uib.no> wrote:

> I am getting some panics after upgrading from 2.2.13 to 2.2.14
> 
> This panic happens for one user only, he is subscribed to 86 folders,
> on two of them this panic happens quite often - several times a day.
> 
> The mbox folders seems OK, less than 30M with 30 and 200 messages.
> 
> Panic: file mail-index-sync-update.c: line 250 (sync_expunge_range): assertion failed: (count > 0)
> 
> hmk
> 
> 
> GNU gdb 6.8
> 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 "i386-pc-solaris2.10"...
> Reading symbols from /datapool/local/dovecot-2.2.14/lib/dovecot/libdovecot-storage.so.0...done.
> Loaded symbols for /local/dovecot-2.2.14/lib/dovecot/libdovecot-storage.so.0
> Reading symbols from /datapool/local/dovecot-2.2.14/lib/dovecot/libdovecot.so.0...done.
> Loaded symbols for /local/dovecot-2.2.14/lib/dovecot/libdovecot.so.0
> Reading symbols from /datapool/local/program/lib/libssl.so.1.0.0...done.
> Loaded symbols for /local/program/lib/libssl.so.1.0.0
> Reading symbols from /datapool/local/program/lib/libcrypto.so.1.0.0...done.
> Loaded symbols for /local/program/lib/libcrypto.so.1.0.0
> Reading symbols from /datapool/local/program/lib/libz.so...done.
> Loaded symbols for /local/program/lib/libz.so
> Reading symbols from /lib/libm.so.2...done.
> Loaded symbols for /lib/libm.so.2
> Reading symbols from /datapool/local/program/lib/libiconv.so.2...done.
> Loaded symbols for /local/program/lib/libiconv.so.2
> Reading symbols from /lib/librt.so.1...done.
> Loaded symbols for /lib/librt.so.1
> Reading symbols from /lib/libnsl.so.1...done.
> Loaded symbols for /lib/libnsl.so.1
> Reading symbols from /lib/libsocket.so.1...done.
> Loaded symbols for /lib/libsocket.so.1
> Reading symbols from /lib/libsendfile.so.1...done.
> Loaded symbols for /lib/libsendfile.so.1
> Reading symbols from /lib/libc.so.1...done.
> Loaded symbols for /lib/libc.so.1
> Reading symbols from /lib/libdl.so.1...done.
> Loaded symbols for /lib/libdl.so.1
> Reading symbols from /usr/lib/libz.so...done.
> Loaded symbols for /usr/lib/libz.so
> Reading symbols from /lib/libaio.so.1...done.
> Loaded symbols for /lib/libaio.so.1
> Reading symbols from /lib/libmd.so.1...done.
> Loaded symbols for /lib/libmd.so.1
> Reading symbols from /lib/ld.so.1...done.
> Loaded symbols for /lib/ld.so.1
> Core was generated by `dovecot/imap imap-postlogin'.
> Program terminated with signal 6, Aborted.
> [New process 76621    ]
> #0  0xfe7fc8e5 in _lwp_kill () from /lib/libc.so.1
> #0  0xfe7fc8e5 in _lwp_kill () from /lib/libc.so.1
> No symbol table info available.
> #1  0xfe7f7765 in thr_kill () from /lib/libc.so.1
> No symbol table info available.
> #2  0xfe7a376f in raise () from /lib/libc.so.1
> No symbol table info available.
> #3  0xfe7829e1 in abort () from /lib/libc.so.1
> No symbol table info available.
> #4  0xfeda13ba in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at failures.c:152
> 	backtrace = 0x8093660 "0xfeda22d7 -> 0xfeda15d3 -> 0xfef31e5f -> 0xfef32d65 -> 0xfef3349e -> 0xfef33b77 -> 0xfef1dcbd -> 0xfef170e4 -> 0xfef173a4 -> 0xfef1767d -> 0xfef03e09 -> 0xfeea5540 -> 0xfeea5714 -> 0xfeea5857 -> 0xfe"...
> #5  0xfeda22d7 in i_internal_fatal_handler (ctx=0x8047400, 
>    format=0xfef5ebc8 "file %s: line %d (%s): assertion failed: (%s)", args=0x8047424 ".ìõþú")
>    at failures.c:152
> 	status = 0
> #6  0xfeda15d3 in i_panic (format=0xfef5ebc8 "file %s: line %d (%s): assertion failed: (%s)")
>    at failures.c:152
> 	ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0, timestamp_usecs = 0}
> 	args = 0x8047424 ".ìõþú"
> #7  0xfef31e5f in sync_expunge_range (ctx=0x8047600, seqs=0x80474d8) at ../../src/lib/array.h:197
> 	map = (struct mail_index_map *) 0x80c5d90
> 	range = (const struct seq_range *) 0x8093430
> 	i = 134509780
> 	count = 0
> 	dest_seq1 = 562
> 	prev_seq2 = 562
> 	orig_rec_count = 4277606968
> 	__FUNCTION__ = "sync_expunge_range"
> #8  0xfef32d65 in mail_index_sync_record_real (ctx=0x8047600, hdr=0x80b5d28, data=0x80b5df8)
>    at ../../src/lib/array.h:197
> 	rec = (const struct mail_transaction_expunge_guid *) 0x80b8968
> 	end = (const struct mail_transaction_expunge_guid *) 0x80b8968
> 	seqs = {arr = {buffer = 0x8093410, element_size = 8}, v = 0x8093410, v_modifiable = 0x8093410}
> 	seq = 0
> 	modseq = 32612
> 	ret = 0
> 	__FUNCTION__ = "mail_index_sync_record_real"
> #9  0xfef3349e in mail_index_sync_record (ctx=0x8047600, hdr=0x80b5d28, data=0x80b5df8)
>    at ../../src/lib/array.h:197
> 	_data_stack_cur_id = 5
> 	ret = 1
> #10 0xfef33b77 in mail_index_sync_map (_map=0x80b5400, type=MAIL_INDEX_SYNC_HANDLER_HEAD, force=true)
>    at ../../src/lib/array.h:197
> 	map = (struct mail_index_map *) 0x0
> 	index = (struct mail_index *) 0x80b53b0
> 	view = (struct mail_index_view *) 0x80ab8b0
> 	sync_map_ctx = {view = 0x80ab8b0, modseq_ctx = 0x809ca50, cur_ext_map_idx = 0, 
>  ext_intro_seq = 5, ext_intro_offset = 52, ext_intro_end_offset = 84, expunge_handlers = {arr = {
>      buffer = 0x0, element_size = 0}, v = 0x0, v_modifiable = 0x0}, extra_contexts = {arr = {
>      buffer = 0x809c348, element_size = 4}, v = 0x809c348, v_modifiable = 0x809c348}, 
>  unknown_extensions = 0x0, type = MAIL_INDEX_SYNC_HANDLER_HEAD, sync_handlers_initialized = 0, 
>  expunge_handlers_set = 0, expunge_handlers_used = 0, cur_ext_ignore = 0, internal_update = 0, 
>  errors = 0}
> 	thdr = (const struct mail_transaction_header *) 0x80b5d28
> 	tdata = (const void *) 0x80b5df8
> 	prev_seq = 5
> 	start_offset = 0
> 	prev_offset = 144
> 	ret = 1
> 	had_dirty = false
> 	reset = true
> 	__FUNCTION__ = "mail_index_sync_map"
> #11 0xfef1dcbd in mail_index_map (index=0x80b53b0, type=MAIL_INDEX_SYNC_HANDLER_HEAD)
>    at mail-index-map-read.c:35
> 	ret = 1
> 	__FUNCTION__ = "mail_index_map"
> #12 0xfef170e4 in mail_index_try_open (index=0x80b53b0) at ../../src/lib/array.h:197
> 	ret = 134919688
> 	__FUNCTION__ = "mail_index_try_open"
> #13 0xfef173a4 in mail_index_open_files (index=0x80b53b0, flags=21) at ../../src/lib/array.h:197
> 	ret = 1
> #14 0xfef1767d in mail_index_open (index=0x80b53b0, flags=21) at ../../src/lib/array.h:197
> 	ret = 134960048
> 	__FUNCTION__ = "mail_index_open"
> #15 0xfef03e09 in index_storage_mailbox_open (box=0x80b47c8, move_to_memory=false) at index-storage.c:39
> 	ibox = (struct index_mailbox_context *) 0x80b4a80
> 	index_flags = 21
> 	ret = 0
> 	__FUNCTION__ = "index_storage_mailbox_open"
> #16 0xfeea5540 in mbox_mailbox_open_finish (mbox=0x80b47c8, move_to_memory=false) at mbox-storage.c:77
> No locals.
> #17 0xfeea5714 in mbox_mailbox_open_existing (mbox=0x80b47c8) at mbox-storage.c:77
> 	box = (struct mailbox *) 0x80b47c8
> 	rootdir = 0xfeea581f "\215\225`ÿÿÿ\211T$\004\211\004$è\023¨ûÿ\211Eð\203}ð"
> 	box_path = 0x80b4b78 "/Home/USER/mail/pro/triad"
> 	move_to_memory = false
> #18 0xfeea5857 in mbox_mailbox_open (box=0x80b47c8) at mbox-storage.c:77
> 	mbox = (struct mbox_mailbox *) 0x80b47c8
> 	st = {st_dev = 82051096, st_pad1 = {0, 0, 0}, st_ino = 4141941, st_mode = 33152, st_nlink = 1, 
>  st_uid = 32440, st_gid = 4601, st_rdev = 0, st_pad2 = {0, 0}, st_size = 16826589, st_atim = {
>    tv_sec = 1411034237, tv_nsec = 0}, st_mtim = {tv_sec = 1413152136, tv_nsec = 0}, st_ctim = {
>    tv_sec = 1413659956, tv_nsec = 975959000}, st_blksize = 8192, st_blocks = 33016, 
>  st_fstype = "nfs", '\0' <repeats 12 times>, st_pad4 = {0, 0, 0, 0, 0, 0, 0, 0}}
> 	ret = 0
> #19 0xfeec94cc in mailbox_open_full (box=0x80b47c8, input=0x0) at ../../src/lib/array.h:197
> 	_data_stack_cur_id = 4
> 	ret = 143
> #20 0xfeec9807 in mailbox_open (box=0x80b47c8) at ../../src/lib/array.h:197
> No locals.
> #21 0xfef024ec in index_storage_get_status (box=0x80b47c8, items=23, status_r=0x8047a04)
>    at index-status.c:23
> No locals.
> #22 0xfeeca8ac in mailbox_get_status (box=0x80b47c8, items=23, status_r=0x8047a04)
>    at ../../src/lib/array.h:197
> 	__FUNCTION__ = "mailbox_get_status"
> #23 0x08073ddb in imap_status_get (cmd=0x80b1fb8, ns=0x80ab1b0, mailbox=0x8093318 "pro/triad", 
>    items=0x8047a70, result_r=0x8047a04) at imap-status.c:23
> 	client = (struct client *) 0x80b17b0
> 	box = (struct mailbox *) 0x80b47c8
> 	errstr = 0x8064d84 "\205Àu\034\213\205hÿÿÿÇD$\004\005"
> 	ret = 0
> #24 0x08064e65 in cmd_status (cmd=0x80b1fb8) at cmd-status.c:23
> 	client = (struct client *) 0x80b17b0
> 	args = (const struct imap_arg *) 0x80ab240
> 	list_args = (const struct imap_arg *) 0x80ab328
> 	items = {status = 23, metadata = 0}
> 	result = {status = {messages = 0, recent = 0, unseen = 0, uidvalidity = 0, uidnext = 0, 
>    first_unseen_seq = 0, first_recent_uid = 0, last_cached_seq = 0, highest_modseq = 0, 
>    highest_pvt_modseq = 0, keywords = 0x0, permanent_flags = 0, permanent_keywords = 0, 
>    allow_new_keywords = 0, nonpermanent_modseqs = 0, no_modseq_tracking = 0, have_guids = 1, 
>    have_save_guids = 0, have_only_guid128 = 0}, metadata = {
>    guid = "\000\000\000\000\001\000\000\000\r\000\000\000\033\000\000", virtual_size = 2199023255593, 
>    cache_fields = 0xfe7a67f2, precache_fields = 134861792, backend_ns_prefix = 0x80921a8 "0(\t\b\030", 
>    backend_ns_type = 134511236}, error = 134654712, errstr = 0x80b2038 "STATUS"}
> 	ns = (struct mail_namespace *) 0x80ab1b0
> 	mailbox = 0x8093318 "pro/triad"
> 	orig_mailbox = 0x80ab2f8 "pro/triad"
> 	selected_mailbox = false
> #25 0x0806aa61 in command_exec (cmd=0x80b1fb8) at imap-commands.c:101
> 	hook = (const struct command_hook *) 0x809bfd8
> 	ret = 8
> #26 0x080699d2 in client_command_input (cmd=0x80b1fb8) at imap-client.c:130
> 	client = (struct client *) 0x80b17b0
> 	command = (struct command *) 0x3
> 	__FUNCTION__ = "client_command_input"
> #27 0x08069cb7 in client_command_input (cmd=0x80b1fb8) at imap-client.c:130
> 	client = (struct client *) 0x80b17b0
> 	command = (struct command *) 0x809d3d4
> 	__FUNCTION__ = "client_command_input"
> #28 0x08069dba in client_handle_next_command (client=0x80b17b0, remove_io_r=0x8047b9d)
>    at imap-client.c:130
> No locals.
> #29 0x08069e57 in client_handle_input (client=0x80b17b0) at imap-client.c:130
> 	_data_stack_cur_id = 3
> 	ret = 10
> 	remove_io = false
> 	handled_commands = false
> 	__FUNCTION__ = "client_handle_input"
> #30 0x08069fe0 in client_input (client=0x80b17b0) at imap-client.c:130
> 	cmd = (struct client_command_context *) 0x80aa9a4
> 	output = (struct ostream *) 0x80abe08
> 	bytes = 55
> 	__FUNCTION__ = "client_input"
> #31 0xfedba96d in io_loop_call_io (io=0x80abe70) at ioloop.c:28
> 	ioloop = (struct ioloop *) 0x809bf20
> 	t_id = 2
> 	__FUNCTION__ = "io_loop_call_io"
> #32 0xfedbc0cc in io_loop_handler_run_internal (ioloop=0x809bf20) at ioloop-poll.c:96
> 	ctx = (struct ioloop_handler_context *) 0x809ca10
> 	pollfd = (struct pollfd *) 0x809e0a8
> 	tv = {tv_sec = 1799, tv_usec = 999672}
> 	io = (struct io_file *) 0x80abe70
> 	msecs = 1800000
> 	ret = 0
> 	call = true
> #33 0xfedbab06 in io_loop_handler_run (ioloop=0x809bf20) at ioloop.c:28
> No locals.
> #34 0xfedbaa5d in io_loop_run (ioloop=0x809bf20) at ioloop.c:28
> 	__FUNCTION__ = "io_loop_run"
> #35 0xfed41db1 in master_service_run (service=0x809be68, callback=0x80771da <client_connected>)
>    at master-service.c:75
> No locals.
> #36 0x08077577 in main (argc=2, argv=0x809bc78) at main.c:72
> 	set_roots = {0x8092fe0, 0x0}
> 	login_set = {auth_socket_path = 0x80930e8 "", postlogin_socket_path = 0x8093120 "", 
>  postlogin_timeout_secs = 60, callback = 0x8076f4e <login_client_connected>, 
>  failure_callback = 0x807715d <login_client_failed>, request_auth_token = 1}
> 	service_flags = MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN
> 	storage_service_flags = MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT
> 	username = 0x0
> 	c = -1



More information about the dovecot mailing list