[Dovecot] dsync duplicates messages/crashed if a 'large' number of messages has been deleted

Matthias Rieber ml-dovecot at zu-con.org
Sat Jul 10 19:05:49 EEST 2010


  Hi,

On 10.07.2010 16:58, Timo Sirainen wrote:
> On 10.7.2010, at 14.46, Matthias Rieber wrote:
>
>>>> dsync-local(mailverwalter): Info: Posteingang: Ignored 178 modseq changes
>>>> dsync-local(mailverwalter): Info: Posteingang: Couldn't keep all uids
>>>> dsync-local(mailverwalter): Warning: Mailbox changes caused a desync. You may want to run dsync again.
>>> Did only one of the sides have changes or did both?
>>>
>> just one side. It doesn't crash always. If it doesn't crash, all messages in that folder will be duplicated.
> The crash is a separate problem from the duplication. I did a couple of fixes though, see if it does something different now?
>
> http://hg.dovecot.org/dovecot-2.0/rev/56cf4f6261dd
> http://hg.dovecot.org/dovecot-2.0/rev/06e4a422aa91
this time:

dsync-local(mailverwalter): Info: Posteingang: Ignored 500 modseq changes
dsync-local(mailverwalter): Info: Posteingang: Couldn't keep all uids
dsync-local(mailverwalter): Panic: file dsync-worker-local.c: line 1515 
(dsync_worker_try_finish): assertion failed: (!worker->finished)
dsync-local(mailverwalter): Error: Raw backtrace: 
/usr/local/lib/dovecot/libdovecot.so.0 [0xf7eb9541] -> 
/usr/local/lib/dovecot/libdovecot.so.0(default_fatal_handler+0x4e) 
[0xf7eb966e] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) 
[0xf7eb9878] -> dsync [0x8055c0b] -> dsync [0x8056551] -> 
dsync(dsync_worker_msg_save+0x4e) [0x8055a3e] -> dsync [0x8050824] -> 
dsync [0x8053837] -> dsync [0x8053b42] -> 
/usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0xf5) 
[0xf7ec5bc5] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_run+0x30) 
[0xf7ec4c10] -> 
/usr/local/lib/dovecot/libdovecot.so.0(master_service_run+0x2a) 
[0xf7eb229a] -> dsync(main+0x732) [0x804db32] -> 
/lib/libc.so.6(__libc_start_main+0xe5) [0xf7d46455] -> dsync [0x804d0c1]

Backtrace:

Program terminated with signal 6, Aborted.
[New process 2760]
#0 0xf7d5a556 in raise () from /lib/libc.so.6
#0 0xf7d5a556 in raise () from /lib/libc.so.6
No symbol table info available.
#1 0xf7d5bd78 in abort () from /lib/libc.so.6
No symbol table info available.
#2 0xf7eb9555 in default_fatal_finish (type=<value optimized out>, 
status=0) at failures.c:164
backtrace = 0x9bd0bc0 "/usr/local/lib/dovecot/libdovecot.so.0 
[0xf7eb9541] -> 
/usr/local/lib/dovecot/libdovecot.so.0(default_fatal_handler+0x4e) 
[0xf7eb966e] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) 
[0xf7eb9878]"...
#3 0xf7eb966e in default_fatal_handler (type=LOG_TYPE_PANIC, status=0, 
format=0x8058c84 "file %s: line %d (%s): assertion failed: (%s)", 
args=0xfffdc7f4 "Ԥ\005\b�005") at failures.c:176
No locals.
#4 0xf7eb9878 in i_panic (format=0x8058c84 "file %s: line %d (%s): 
assertion failed: (%s)") at failures.c:230
No locals.
#5 0x08055c0b in dsync_worker_try_finish (worker=0x6) at 
dsync-worker-local.c:1515
__FUNCTION__ = "dsync_worker_try_finish"
#6 0x08056551 in local_worker_msg_save (_worker=0x9bfd628, 
msg=0xf7b8b490, data=0x9bf9784, callback=0x8050740 <msg_save_callback>, 
context=0x9c20f88) at dsync-worker-local.c:1606
dest_box = (struct mailbox *) 0x9c366f8
save_ctx = (struct mail_save_context *) 0x9c0b230
__FUNCTION__ = "local_worker_msg_save"
#7 0x08055a3e in dsync_worker_msg_save (worker=0x9bfd628, 
msg=0xf7b8b490, data=0x9bf9784, callback=0x8050740 <msg_save_callback>, 
context=0x9c20f88) at dsync-worker.c:231
_data_stack_cur_id = 3
#8 0x08050824 in msg_get_callback (result=DSYNC_MSG_GET_RESULT_SUCCESS, 
data=0x9bf9784, context=0x9c20f88) at dsync-brain-msgs-new.c:78
mailbox = (const struct dsync_brain_mailbox *) 0xf7b6f0cc
input = (struct istream *) 0x9c21348
__FUNCTION__ = "msg_get_callback"
#9 0x08053837 in proxy_client_worker_next_reply (worker=0x9bf96c0, 
line=0x9c38c5e "1\t12572\t1278754681\t") at dsync-proxy-client.c:225
request = {type = PROXY_CLIENT_REQUEST_TYPE_GET, uid = 12572, callback = 
{get = 0x8050790 <msg_get_callback>, copy = 0x8050790 
<msg_get_callback>, finish = 0x8050790 <msg_get_callback>}, context = 
0x9c20f88}
ret = <value optimized out>
#10 0x08053b42 in proxy_client_worker_input (worker=0x9bf96c0) at 
dsync-proxy-client.c:289
line = 0x9c38c5e "1\t12572\t1278754681\t"
ret = <value optimized out>
#11 0xf7ec5bc5 in io_loop_handler_run (ioloop=0x9bd7508) at 
ioloop-epoll.c:212
ctx = (struct ioloop_handler_context *) 0x9bd7618
event = (const struct epoll_event *) 0x9bd7658
list = (struct io_list *) 0x9bf97f0
io = (struct io_file *) 0x9bf97c8
tv = {tv_sec = 4, tv_usec = 657599}
t_id = 2
msecs = <value optimized out>
ret = 1
i = 0
j = 0
call = <value optimized out>
#12 0xf7ec4c10 in io_loop_run (ioloop=0x9bd7508) at ioloop.c:350
No locals.
#13 0xf7eb229a in master_service_run (service=0x9bd7448, 
callback=0x804d160 <dsync_connected>) at master-service.c:495
No locals.
#14 0x0804db32 in main (argc=) at dsync.c:303
ssflags = <value optimized out>
brain_flags = 3
storage_service = (struct mail_storage_service_ctx *) 0x9bd8108
service_user = (struct mail_storage_service_user *) 0x9bd89b8
input = {module = 0x805a518 "mail", service = 0x8058e13 "dsync", 
username = 0x9bd7207 "mailverwalter", local_ip = {family = 0, u = {ip6 = 
{in6_u = {u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 
0, 0, 0, 0},
u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, remote_ip = {family = 
0, u = {ip6 = {in6_u = {u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = 
{0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}},
userdb_fields = 0x0}
mail_user = (struct mail_user *) 0x9bf01b0
mail_user2 = (struct mail_user *) 0x0
worker1 = (struct dsync_worker *) 0x9bfd628
worker2 = (struct dsync_worker *) 0x9bf96c0
workertmp = <value optimized out>
error = <value optimized out>
username = 0x9bd7207 "mailverwalter"
cmd_name = 0x9bd7215 "mirror"
mailbox = 0x0
local_location = 0x0
remote_cmd_args = (const char * const *) 0x9bcf080
dsync_server = false
unexpected_changes = <value optimized out>
dsync_debug = false
reverse_workers = false
alt_char = 95 '_'
c = <value optimized out>
ret = <value optimized out>
fd_in = <value optimized out>
fd_out = <value optimized out>
__FUNCTION__ = "main"

Matthias


More information about the dovecot mailing list