[Dovecot] 1.0alpha4: mbox-lock asserts and cores

Jeff A. Earickson jaearick at colby.edu
Fri Oct 21 16:39:04 EEST 2005


Timo,

I upgraded from alpha3 to alpha4 yesterday, and I am seeing
a few of the following asserts:

imap(user): file mbox-lock.c: line 379 (mbox_lock_fcntl): 
assertion failed: (lock_type == F_UNLCK)

Gdb info on a couple of the cores is attached.  It looks
like the arg lock_type for mbox_lock_fcntl() is not getting
passed in correctly, like the enum "enum mbox_lock_type type"
in mbox_lock_list() is not getting set or used correctly so
that lock_data[type].func is wrong.  Hmmm.

My setup: Solaris 9, mbox, dovecot built with gcc 4.0.2.
The filesystem for INBOXes is NFS mounted from another Solaris 9
system, but the index files reside on local filesystems.
My setting for "lock_method = fcntl", per your release notes.
I did not change the default setting of "mmap_disable = no"
because my index files are local.

Jeff Earickson
Colby College
-------------- next part --------------
Script started on Fri Oct 21 09:10:12 2005
%gdb imap core.jnbero
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.9"...
Core was generated by `imap'.
Program terminated with signal 6, Aborted.
Reading symbols from /usr/lib/libdl.so.1...done.
Loaded symbols for /usr/lib/libdl.so.1
Reading symbols from /usr/lib/libsocket.so.1...done.
Loaded symbols for /usr/lib/libsocket.so.1
Reading symbols from /usr/lib/libnsl.so.1...done.
Loaded symbols for /usr/lib/libnsl.so.1
Reading symbols from /usr/lib/librt.so.1...done.
Loaded symbols for /usr/lib/librt.so.1
Reading symbols from /usr/lib/libsendfile.so.1...done.
Loaded symbols for /usr/lib/libsendfile.so.1
Reading symbols from /usr/lib/libc.so.1...done.
Loaded symbols for /usr/lib/libc.so.1
Reading symbols from /usr/lib/libmp.so.2...done.
Loaded symbols for /usr/lib/libmp.so.2
Reading symbols from /usr/lib/libaio.so.1...done.
Loaded symbols for /usr/lib/libaio.so.1
Reading symbols from /usr/lib/libmd5.so.1...done.
Loaded symbols for /usr/lib/libmd5.so.1
Reading symbols from /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1...done.
Loaded symbols for /usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1
#0  0xff2201a0 in _libc_kill () from /usr/lib/libc.so.1
(gdb) backtrace
#0  0xff2201a0 in _libc_kill () from /usr/lib/libc.so.1
#1  0xff1b6ce0 in abort () from /usr/lib/libc.so.1
#2  0x000698d0 in i_internal_panic_handler (
    fmt=0x7ce70 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xffbfefd0) at failures.c:375
#3  0x000693a8 in i_panic (
    format=0x7ce70 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:173
#4  0x00035394 in mbox_lock_fcntl (ctx=0xffbff4c8, lock_type=Variable "lock_type" is not available.
)
    at mbox-lock.c:379
#5  0x00035534 in mbox_lock_list (ctx=0xffbff4c8, lock_type=2,
    max_wait_time=0, idx=Variable "idx" is not available.
) at mbox-lock.c:439
#6  0x00035060 in dotlock_callback (secs_left=15, stale=1, context=Variable "context" is not available.
)
    at mbox-lock.c:209
#7  0x0006b03c in dotlock_create (path=0xab448 "/var/mail/j/jnbero",
    dotlock=0xacfc0, flags=0, write_pid=1) at file-dotlock.c:408
#8  0x0006b208 in file_dotlock_create (set=Variable "set" is not available.
) at file-dotlock.c:482
#9  0x00035194 in mbox_lock_dotlock (ctx=0xffbff4c8, lock_type=2,
    max_wait_time=1129857019) at mbox-lock.c:257
#10 0x00035534 in mbox_lock_list (ctx=0xffbff4c8, lock_type=2,
    max_wait_time=1129857019, idx=Variable "idx" is not available.
) at mbox-lock.c:439
#11 0x0003568c in mbox_update_locking (mbox=0xab2c0, lock_type=2)
    at mbox-lock.c:482
#12 0x0003586c in mbox_lock (mbox=0xab2c0, lock_type=2, lock_id_r=0xffbff5d4)
    at mbox-lock.c:523
#13 0x0003af58 in mbox_sync (mbox=0xab2c0, flags=MBOX_SYNC_UNDIRTY)
    at mbox-sync.c:1587
#14 0x0003b4d4 in mbox_storage_sync_init (box=0xab2c0,
    flags=MAILBOX_SYNC_FLAG_FULL_READ) at mbox-sync.c:1770
#15 0x0005bfb8 in mailbox_sync_init (box=Variable "box" is not available.
) at mail-storage.c:336
#16 0x000275fc in imap_sync_nonselected (box=0xab2c0,
    flags=MAILBOX_SYNC_FLAG_FULL_READ) at imap-sync.c:177
#17 0x0001f330 in _cmd_select_full (cmd=0xa4378, readonly=Variable "readonly" is not available.
) at cmd-select.c:39
#18 0x0001f4a0 in cmd_select (cmd=Variable "cmd" is not available.
) at cmd-select.c:92
#19 0x00020d6c in client_handle_input (cmd=0xa4378) at client.c:338
#20 0x00020e74 in _client_input (context=Variable "context" is not available.
) at client.c:390
#21 0x0006ef00 in io_loop_handler_run (ioloop=0xa1c38) at ioloop-poll.c:190
#22 0x0006e78c in io_loop_run (ioloop=0xa1c38) at ioloop.c:230
#23 0x000294b8 in main (argc=0, argv=0xffbffbac, envp=0xffbffbb4) at main.c:232
(gdb) up 4
#4  0x00035394 in mbox_lock_fcntl (ctx=0xffbff4c8, lock_type=Variable "lock_type" is not available.
)
    at mbox-lock.c:379
379                     i_assert(lock_type == F_UNLCK);
(gdb) print *ctx
$1 = {mbox = 0xab2c0, lock_status = {1, 1, 0, 0}, checked_file = 1,
  lock_type = 2, dotlock_last_stale = 0}
(gdb) print lock_type
Variable "lock_type" is not available.
(gdb) up
#5  0x00035534 in mbox_lock_list (ctx=0xffbff4c8, lock_type=2,
    max_wait_time=0, idx=Variable "idx" is not available.
) at mbox-lock.c:439
439                     ret = lock_data[type].func(ctx, lock_type, max_wait_time);
(gdb) print lock_type
$2 = 2
(gdb) quit
%gdb. imap core.akearney
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.9"...
Core was generated by `imap'.
Program terminated with signal 6, Aborted.
Reading symbols from /usr/lib/libdl.so.1...done.
Loaded symbols for /usr/lib/libdl.so.1
Reading symbols from /usr/lib/libsocket.so.1...done.
Loaded symbols for /usr/lib/libsocket.so.1
Reading symbols from /usr/lib/libnsl.so.1...done.
Loaded symbols for /usr/lib/libnsl.so.1
Reading symbols from /usr/lib/librt.so.1...done.
Loaded symbols for /usr/lib/librt.so.1
Reading symbols from /usr/lib/libsendfile.so.1...done.
Loaded symbols for /usr/lib/libsendfile.so.1
Reading symbols from /usr/lib/libc.so.1...done.
Loaded symbols for /usr/lib/libc.so.1
Reading symbols from /usr/lib/libmp.so.2...done.
Loaded symbols for /usr/lib/libmp.so.2
Reading symbols from /usr/lib/libaio.so.1...done.
Loaded symbols for /usr/lib/libaio.so.1
Reading symbols from /usr/lib/libmd5.so.1...done.
Loaded symbols for /usr/lib/libmd5.so.1
Reading symbols from /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1...done.
Loaded symbols for /usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1
#0  0xff2201a0 in _libc_kill () from /usr/lib/libc.so.1
(gdb) backtrace
#0  0xff2201a0 in _libc_kill () from /usr/lib/libc.so.1
#1  0xff1b6ce0 in abort () from /usr/lib/libc.so.1
#2  0x000698d0 in i_internal_panic_handler (
    fmt=0x7ce70 "file %s: line %d (%s): assertion failed: (%s)",
    args=0xffbfefc8) at failures.c:375
#3  0x000693a8 in i_panic (
    format=0x7ce70 "file %s: line %d (%s): assertion failed: (%s)")
    at failures.c:173
#4  0x00035394 in mbox_lock_fcntl (ctx=0xffbff4c0, lock_type=Variable "lock_type" is not available.
)
    at mbox-lock.c:379
#5  0x00035534 in mbox_lock_list (ctx=0xffbff4c0, lock_type=2,
    max_wait_time=0, idx=Variable "idx" is not available.
) at mbox-lock.c:439
#6  0x00035060 in dotlock_callback (secs_left=15, stale=1, context=Variable "context" is not available.
)
    at mbox-lock.c:209
#7  0x0006b03c in dotlock_create (path=0xab448 "/var/mail/a/akearney",
    dotlock=0xacfc8, flags=0, write_pid=1) at file-dotlock.c:408
#8  0x0006b208 in file_dotlock_create (set=Variable "set" is not available.
) at file-dotlock.c:482
#9  0x00035194 in mbox_lock_dotlock (ctx=0xffbff4c0, lock_type=2,
    max_wait_time=1129887964) at mbox-lock.c:257
#10 0x00035534 in mbox_lock_list (ctx=0xffbff4c0, lock_type=2,
    max_wait_time=1129887964, idx=Variable "idx" is not available.
) at mbox-lock.c:439
#11 0x0003568c in mbox_update_locking (mbox=0xab2c0, lock_type=2)
    at mbox-lock.c:482
#12 0x0003586c in mbox_lock (mbox=0xab2c0, lock_type=2, lock_id_r=0xffbff5cc)
    at mbox-lock.c:523
#13 0x0003af58 in mbox_sync (mbox=0xab2c0, flags=MBOX_SYNC_UNDIRTY)
    at mbox-sync.c:1587
#14 0x0003b4d4 in mbox_storage_sync_init (box=0xab2c0,
    flags=MAILBOX_SYNC_FLAG_FULL_READ) at mbox-sync.c:1770
#15 0x0005bfb8 in mailbox_sync_init (box=Variable "box" is not available.
) at mail-storage.c:336
#16 0x000275fc in imap_sync_nonselected (box=0xab2c0,
    flags=MAILBOX_SYNC_FLAG_FULL_READ) at imap-sync.c:177
#17 0x0001f330 in _cmd_select_full (cmd=0xa4378, readonly=Variable "readonly" is not available.
) at cmd-select.c:39
#18 0x0001f4a0 in cmd_select (cmd=Variable "cmd" is not available.
) at cmd-select.c:92
#19 0x00020d6c in client_handle_input (cmd=0xa4378) at client.c:338
#20 0x00020e74 in _client_input (context=Variable "context" is not available.
) at client.c:390
#21 0x0006ef00 in io_loop_handler_run (ioloop=0xa1c38) at ioloop-poll.c:190
#22 0x0006e78c in io_loop_run (ioloop=0xa1c38) at ioloop.c:230
#23 0x000294b8 in main (argc=0, argv=0xffbffba4, envp=0xffbffbac) at main.c:232
(gdb) up 4
#4  0x00035394 in mbox_lock_fcntl (ctx=0xffbff4c0, lock_type=Variable "lock_type" is not available.
)
    at mbox-lock.c:379
379                     i_assert(lock_type == F_UNLCK);
(gdb) print *ctx
$1 = {mbox = 0xab2c0, lock_status = {1, 1, 0, 0}, checked_file = 1,
  lock_type = 2, dotlock_last_stale = 0}
(gdb) print lock_ty[pe   pe
Variable "lock_type" is not available.
(gdb) up
#5  0x00035534 in mbox_lock_list (ctx=0xffbff4c0, lock_type=2,
    max_wait_time=0, idx=Variable "idx" is not available.
) at mbox-lock.c:439
439                     ret = lock_data[type].func(ctx, lock_type, max_wait_time);
(gdb) print lock_type
$2 = 2
(gdb) print ctx->lock_type
$3 = 2
(gdb) print type
No symbol "type" in current context.
(gdb) print mbox_lock_type
No symbol "mbox_lock_type" in current context.
(gdb) print idx
Variable "idx" is not available.
(gdb) quit
%quit
quit: Command not found.
%exit
exit

script done on Fri Oct 21 09:21:38 2005


More information about the dovecot mailing list