doveadm backup abort in imapc-client.c

Evan Klitzke evan at eklitzke.org
Sun Sep 30 02:14:08 EEST 2018


Admin <admin at awib.it> writes:

> "Reliably" means what exactly?
>  - At progress of 66%?
>  - after e.g. 9611 Mails?
>  - whenever a specific Mail is touched?

Reliably means "before the sync finishes", but not at a specific point. 
I have about 2GB of mail I'm trying to sync, and the furthest the sync 
has gotten is about 1GB of the way in.

I looked at the core dump some more and I sort of get what's going on, 
although I don't understand the code well enough to fix the issue. The 
imapc_client is being called in a re-entrant way, in the sense that 
imapc_client_run() is called, and then while that imapc_client_run() 
function is being invoked and is on the call stack, the event loop gets 
triggered again and calls imapc_connection_input(). That causes 
imapc_client_run() to be called with the same imapc_client object, and 
this is what causes the assertion to fail. You can see this in the stack 
trace I posted, and I was able to confirm in GDB that the two 
invocations of imapc_client_run_pre() on the call stack both refer to 
the same imapc_client struct.

--
Evan Klitzke                      pgp: 0x157EFCACBC648422
e: evan at eklitzke.org              w: https://eklitzke.org


More information about the dovecot mailing list