Re: [Dovecot] dsync crash
On Wed, 2010-09-15 at 18:34 +0400, Василий Шоков wrote:
namespace { hidden = no inbox = yes location = maildir:~/mail/inbox/:INDEX=/var/dovecot_index/%u/inbox prefix = .INBOX.
Uh. Does this really work with IMAP clients? A namespace prefix must not start with hierarchy separator. My guess is that the crash happens because of it. I think I'll add code to give an error if it's tried.
namespace { hidden = no inbox = yes location = maildir:~/mail/inbox/:INDEX=/var/dovecot_index/%u/inbox prefix = .INBOX.
Uh. Does this really work with IMAP clients? A namespace prefix must not start with hierarchy separator. My guess is that the crash happens because of it. I think I'll add code to give an error if it's tried.
I removed hierarchy separator from start of namespace prefix (now it looks like "INBOX.") and moved folders.
Still same result.
Also, after upgrade from dovecot 1.1 to 2.0 (and after to 2.0.2) all of our Outlooks (we use Outlook as IMAP clients) works extermely slow.
Kind regards,
Vasiliy Shokov
On Thu, 2010-09-16 at 14:48 +0400, Vasiliy Shokov wrote:
I removed hierarchy separator from start of namespace prefix (now it looks like "INBOX.") and moved folders.
Still same result.
Could you check with gdb what the invalid name is?
dsync(v.shokov): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name))
So probably something like:
ulimit -c unlimited dsync ... gdb dsync core bt full fr 6 p name
(If it doesn't print the name, try a different number to "fr", it's the mailbox_list_is_valid_pattern frame in the bt.)
Could you check with gdb what the invalid name is?
dsync(v.shokov): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name))
So probably something like:
ulimit -c unlimited dsync ... gdb dsync core bt full
warning: Can't read pathname for load map: Input/output error. Reading symbols from /usr/lib/dovecot/libdovecot-storage.so.0...(no debugging symbols found)...done. Loaded symbols for /usr/lib/dovecot/libdovecot-storage.so.0 Reading symbols from /usr/lib/dovecot/libdovecot.so.0...(no debugging symbols found)...done. Loaded symbols for /usr/lib/dovecot/libdovecot.so.0 Reading symbols from /lib/libdl.so.2...(no debugging symbols found)...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /lib/librt.so.1...(no debugging symbols found)...done. Loaded symbols for /lib/librt.so.1 Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2... (no debugging symbols found)...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /lib/libpthread.so.0...(no debugging symbols found)...done. Loaded symbols for /lib/libpthread.so.0 Reading symbols from /lib/libgcc_s.so.1...(no debugging symbols found)...done. Loaded symbols for /lib/libgcc_s.so.1 (no debugging symbols found) Core was generated by `dsync -Dv -u v.shokov mirror sdbox:/dsync/v.shokov'. Program terminated with signal 6, Aborted. #0 0x00126402 in __kernel_vsyscall () (gdb) bt all No symbol table is loaded. Use the "file" command. (gdb) bt full #0 0x00126402 in __kernel_vsyscall () No symbol table info available. #1 0x002fbfc0 in raise () from /lib/libc.so.6 No symbol table info available. #2 0x002fd8d1 in abort () from /lib/libc.so.6 No symbol table info available. #3 0x00224aff in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #4 0x00224be5 in default_fatal_handler () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #5 0x00224178 in i_panic () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #6 0x00181876 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #7 0x0014d9bd in mailbox_list_get_path () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #8 0x00182734 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #9 0x00182272 in fs_list_iter_next () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #10 0x0014da42 in mailbox_list_iter_next () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #11 0x0014ec7f in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #12 0x0014da42 in mailbox_list_iter_next () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #13 0x080580a6 in ?? () No symbol table info available. #14 0x0804ed08 in ?? () No symbol table info available. #15 0x0804e067 in dsync_brain_sync () No symbol table info available. #16 0x0804ef29 in ?? () No symbol table info available. #17 0x0804e016 in dsync_brain_sync () No symbol table info available. #18 0x0804ec08 in dsync_brain_sync_all () No symbol table info available. #19 0x0804d06b in main () No symbol table info available.
fr 6 p name (If it doesn't print the name, try a different number to "fr", it's the mailbox_list_is_valid_pattern frame in the bt.)
I didn't see this pattern in dump. Sorry, I'm not good in C/C++.
Kind regards,
Vasiliy Shokov
On Thu, 2010-09-16 at 21:40 +0400, Vasiliy Shokov wrote:
#7 0x0014d9bd in mailbox_list_get_path () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. ..
(If it doesn't print the name, try a different number to "fr", it's the mailbox_list_is_valid_pattern frame in the bt.)
I didn't see this pattern in dump. Sorry, I'm not good in C/C++.
Yeah, the problem is that the binaries are stripped out of debug symbols. Can you compile non-stripped ones? (It's the default, so how are you compiling Dovecot anyway?)
(If it doesn't print the name, try a different number to "fr", it's
#7 0x0014d9bd in mailbox_list_get_path () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. .. the
mailbox_list_is_valid_pattern frame in the bt.)
I didn't see this pattern in dump. Sorry, I'm not good in C/C++.
Yeah, the problem is that the binaries are stripped out of debug symbols. Can you compile non-stripped ones? (It's the default, so how are you compiling Dovecot anyway?)
I will try to do it at weekend. I compile it from src.rpm.
Kind regards,
Vasiliy Shokov
(If it doesn't print the name, try a different number to "fr", it's
#7 0x0014d9bd in mailbox_list_get_path () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. .. the
mailbox_list_is_valid_pattern frame in the bt.)
I didn't see this pattern in dump. Sorry, I'm not good in C/C++.
Yeah, the problem is that the binaries are stripped out of debug symbols. Can you compile non-stripped ones? (It's the default, so how are you compiling Dovecot anyway?)
So, I get information. Sorry for long message.
bt full
#0 0x00126402 in __kernel_vsyscall ()
No symbol table info available.
#1 0x002fbfc0 in raise () from /lib/libc.so.6
No symbol table info available.
#2 0x002fd8d1 in abort () from /lib/libc.so.6
No symbol table info available.
#3 0x00224aff in default_fatal_finish (type=<value optimized out>,
status=0) at failures.c:164
backtrace = 0x96b21d8 "/usr/lib/dovecot/libdovecot.so.0 [0x224af0]
-> /usr/lib/dovecot/libdovecot.so.0(default_fatal_handler+0x45)
[0x224be5] -> /usr/lib/dovecot/libdovecot.so.0 [0x224178] ->
/usr/lib/dovecot/libdovecot-sto"...
#4 0x00224be5 in default_fatal_handler (type=LOG_TYPE_PANIC, status=0,
format=0x1c9948 "file %s: line %d (%s): assertion failed: (%s)",
args=0xbf8b0534 "\224'\035") at failures.c:176
No locals.
#5 0x00224178 in i_panic (format=0x1c9948 "file %s: line %d (%s):
assertion failed: (%s)") at failures.c:230
args = 0xbf8b0534 "\224'\035"
#6 0x00181876 in fs_list_get_path (_list=0x96d46f8, name=0x96b21a0
"/INBOX", type=MAILBOX_LIST_PATH_TYPE_DIR) at mailbox-list-fs.c:150
set = (const struct mailbox_list_settings *) 0x96d4764
root_dir = <value optimized out>
__FUNCTION__ = "fs_list_get_path"
#7 0x0014d9bd in mailbox_list_get_path (list=0x96d46f8, name=0x96b21a0
"/INBOX", type=MAILBOX_LIST_PATH_TYPE_DIR) at mailbox-list.c:696
No locals.
#8 0x00182734 in fs_list_subs (ctx=0x97119a8) at mailbox-list-fs-iter.c:683
node = <value optimized out>
flags = MAILBOX_SUBSCRIBED
ns = (struct mail_namespace *) 0x96cc6e0
path = <value optimized out>
dir = <value optimized out>
fname = <value optimized out>
storage_name = 0x96b21a0 "/INBOX"
st = {st_dev = 10736181289418848, __pad1 = 1544, __st_ino =
158015880, st_mode = 3213559416, st_nlink = 2351838, st_uid =
3213559304,
st_gid = 3213559448, st_rdev = 9610569145384976, __pad2 = 0, st_size =
-4644611340797739008, st_blksize = 2499712, st_blocks = 73014444049,
st_atim = {
tv_sec = 0, tv_nsec = 0}, st_mtim = {tv_sec = 0, tv_nsec = 0}, st_ctim
= {tv_sec = -1081407944, tv_nsec = 2237248}, st_ino = 0}
#9 0x00182272 in fs_list_iter_next (_ctx=0x97119a8) at
mailbox-list-fs-iter.c:356
_data_stack_cur_id = 2
info = (const struct mailbox_info *) 0x0
__FUNCTION__ = "fs_list_iter_next"
#10 0x0014da42 in mailbox_list_iter_next (ctx=0x97119a8) at
mailbox-list.c:1029
info = <value optimized out>
#11 0x0014ec7f in mailbox_list_ns_iter_next (_ctx=0x9706210) at
mailbox-list.c:926
info = (const struct mailbox_info *) 0x0
#12 0x0014da42 in mailbox_list_iter_next (ctx=0x9706210) at
mailbox-list.c:1029
info = <value optimized out>
#13 0x080580a6 in local_worker_subs_iter_next (_iter=0x970d518,
rec_r=0xbf8b0734) at dsync-worker-local.c:672
worker = <value optimized out>
change_lookup = {name_sha1 = {guid = {62 '>', 22 '\026', 223 '▒',
168 '▒', 228 '▒', 61 '=', 188 '▒', 248 '▒', 128 '\200', 36 '$', 38
'&', 0 '\0',
52 '4', 7 '\a', 139 '\213', 191 '▒'}}, list = 0x0, last_rename =
-1081407720, last_delete = 2233906, last_subs_change = 158378704,
unsubscribed = 0,
---Type <return> to continue, or q <return> to quit---
deleted_dir = 0}
info = <value optimized out>
subs_ns = <value optimized out>
storage_name = <value optimized out>
#14 0x0804ed08 in dsync_worker_subs_input (context=0x970aab0) at
dsync-brain.c:199
subs = {vname = 0x0, storage_name = 0x0, ns_prefix = 0x0,
last_change = 0}
unsubs = {name_sha1 = {guid = {192 '▒', 181 '▒', 176 '▒', 80 'P',
77 'M', 163 '▒', 226 '▒', 109 'm', 7 '\a', 203 '▒', 251 '▒', 123
'{', 197 '▒',
215 '▒', 226 '▒', 214 '▒'}}, ns_prefix = 0x96e3b98 "", last_change =
1284621231}
ret = <value optimized out>
#15 0x0804e067 in dsync_brain_sync (brain=0x96cc760) at dsync-brain.c:832
__FUNCTION__ = "dsync_brain_sync"
#16 0x0804ef29 in dsync_worker_mailbox_input (context=0x96e5ee0) at
dsync-brain.c:99
dsync_box = {name = 0x0, name_sep = 0 '\0', name_sha1 = {guid = {0
'\0'
fr 6
#6 0x00181876 in fs_list_get_path (_list=0x96d46f8, name=0x96b21a0 "/INBOX", type=MAILBOX_LIST_PATH_TYPE_DIR) at mailbox-list-fs.c:150 150 i_assert(mailbox_list_is_valid_pattern(_list, name));
p name
$1 = 0x96b21a0 "/INBOX"
Kind regards,
Vasiliy Shokov
On 16.9.2010, at 20.54, Vasiliy Shokov wrote:
$1 = 0x96b21a0 "/INBOX"
What do you have in subscriptions files? I guess in dbox's side there's "/INBOX" which was added while you still had the ".INBOX." namespace prefix and that causes it to still crash?
On Thu, 2010-09-16 at 21:04 +0100, Timo Sirainen wrote:
On 16.9.2010, at 20.54, Vasiliy Shokov wrote:
$1 = 0x96b21a0 "/INBOX"
What do you have in subscriptions files? I guess in dbox's side there's "/INBOX" which was added while you still had the ".INBOX." namespace prefix and that causes it to still crash?
http://hg.dovecot.org/dovecot-2.0/rev/f7bd4059c6af should fix it, but you should get rid of that subscription.
participants (2)
-
Timo Sirainen
-
Vasiliy Shokov