evolution seems to be stuck trying to migrate a maildir account on each restart.

I created an account of type «Maildir-format mail directories» 
(I think I did so by pointing it to an existing folder)

Steps:
Create a folder named foo. [it creates a folder named .foo]

Close evolution (just closing the shell is enough)
Reopen
The folder is now named .foo (._2Efoo on disk)
Close. Reopen.
The folder is now named ._2Efoo (._2E_5F2Efoo on disk)

And it goes on, creating things like:
._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F2Efoo

evolution version is 3.12.5


There are some related console messages, but most seem a consequence of
the bug rather than the cause (as the folder moves, the metadata file is
missing).

The most interesting are:
> Failed to save the maildir version in ?thefolder/..maildir++?.  
(it should have succeeded)

and 
> The overwriting error message was: database or disk is full
(however there's enough space available on this fs)



Running strace -f -eopen,openat,stat,rename,readdir,close evolution (below) it
doesn't even seem to attempt creating ..maildir++

Manually creating the correct ..maildir++ stops this loops (restarts 
if deleted) but that's a manual fix.

Any idea why is evolution failing to generate the ..maildir++ ?

Is it possible that error is NULL?

that would mean that maildir_store_get_folder_info_sync was called with a null 
error:

camel-maildir-store.c:
> 1299: if (!g_file_set_contents (meta_path, MAILDIR_CONTENT_VERSION_STR, -1, 
> error)) {
> 661: maildir_migrate_hierarchy ((CamelMaildirStore *) store, maildir_version, 
> cancellable, error);
> 785: if (scan_dirs (store, flags, TRUE, &fi, cancellable, error) == -1)

And in the preamble of g_file_set_contents (at gfileutils.c:1172)
>   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);

https://git.gnome.org/browse/glib/tree/glib/gfileutils.c?h=glib-2-40#n1172

But this has been there forever:
https://git.gnome.org/browse/glib/commit/glib/gfileutils.c?id=331548d91ce48f4d1b41fb147179c7680394cb5e

So if that's the case the change would need to be on evolution side.

Cheers


Console output:
> 
> (evolution:4897): camel-CRITICAL **: network_service_connect_sync:
> assertion 'connectable != NULL' failed
> 
> (evolution:4897): GLib-WARNING **: GError set over the top of a
> previous GError or uninitialized memory.
> This indicates a bug in someone's code. You must ensure an error is
> NULL before it's set.
> The overwriting error message was: Could not rename '.': No such file
> or directory
> 
> (evolution:4897): GLib-CRITICAL **: g_file_set_contents: assertion
> 'error == NULL || *error == NULL' failed
> 
> (evolution:4897): camel-local-provider-WARNING **: Failed to save the
> maildir version in ?thefolder/..maildir++?.
> 
> ** (evolution:4897): WARNING **:
> (mail-folder-cache.c:1778):mail_folder_cache_note_store_thread:
> runtime check failed: (async_context->info == NULL)
> 
> (evolution:4897): evolution-mail-WARNING **:
> receive_update_got_folderinfo: You must be working online to complete
> this operation
> 
> (evolution:4897): evolution-mail-WARNING **:
> receive_update_got_folderinfo: Could not rename folder thefolder/. to
> thefolder/._2E: Device or resource busy
> 
> (evolution:4897): camel-CRITICAL **: network_service_connect_sync:
> assertion 'connectable != NULL' failed
> 
> (evolution:4897): camel-CRITICAL **: network_service_connect_sync:
> assertion 'connectable != NULL' failed
> 
> (evolution:4897): evolution-mail-WARNING **:
> receive_update_got_folderinfo: You must be working online to complete
> this operation
> 
> (evolution:4897): GLib-WARNING **: GError set over the top of a
> previous GError or uninitialized memory.
> This indicates a bug in someone's code. You must ensure an error is
> NULL before it's set.
> The overwriting error message was: database or disk is full
> 
> (evolution:4897): GLib-WARNING **: GError set over the top of a
> previous GError or uninitialized memory.
> This indicates a bug in someone's code. You must ensure an error is
> NULL before it's set.
> The overwriting error message was: no such table:
> mem.._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F2Ebar
> 
> (evolution:4897): GLib-WARNING **: GError set over the top of a
> previous GError or uninitialized memory.
> This indicates a bug in someone's code. You must ensure an error is
> NULL before it's set.
> The overwriting error message was: database or disk is full
> 
> (evolution:4897): GLib-WARNING **: GError set over the top of a
> previous GError or uninitialized memory.
> This indicates a bug in someone's code. You must ensure an error is
> NULL before it's set.
> The overwriting error message was: no such table: mem.._2Efoo


******

strace:
> [pid  5275] openat(AT_FDCWD, "thefolder/.foo", O_RDONLY|O_NONBLOCK|
> O_DIRECTORY|O_CLOEXEC) = 24
> [pid  5275] close(24)                   = 0
> [pid  5275]
> rename("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar.ibex.index",
>  
> "thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2Ebar.ibex.index")
>  = -1 ENOENT (No such file or directory)
> [pid  5275]
> rename("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar.ibex.index.data",
>  
> "thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2Ebar.ibex.index.data")
>  = -1 ENOENT (No such file or directory)
> [pid  5275]
> stat("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar.ev-summary",
>  0x7f8f1abbe7e0) = -1 ENOENT (No such file or directory)
> [pid  5275]
> stat("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar.ev-summary-meta",
>  0x7f8f1abbe7e0) = -1 ENOENT (No such file or directory)
> [pid  5275]
> stat("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar.cmeta",
>   <unfinished ...>
> [pid  5275] <... stat resumed> {st_mode=S_IFREG|0644,
> st_size=13, ...}) = 0
> [pid  5275]
> rename("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar.cmeta",
>  
> "thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2Ebar.cmeta")
>  = 0
> [pid  5277] <... stat resumed> {st_mode=S_IFDIR|0700,
> st_size=4096, ...}) = 0
> [pid  5275]
> stat("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar",
>   <unfinished ...>
> [pid  5277] <... stat resumed> {st_mode=S_IFDIR|0700,
> st_size=4096, ...}) = 0
> [pid  5275] <... stat resumed> {st_mode=S_IFDIR|0755,
> st_size=4096, ...}) = 0
> [pid  5275]
> rename("thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2Ebar",
>  
> "thefolder/._2E_5F2E_5F5F2E_5F5F5F2E_5F5F5F5F2E_5F5F5F5F5F2E_5F5F5F5F5F5F2E_5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2E_5F5F5F5F5F5F5F5F2Ebar")
>  = 0
> [pid  5275] rename("thefolder/.foo.ibex.index",
> "thefolder/._2Efoo.ibex.index") = -1 ENOENT (No such file or
> directory)
> [pid  5275] rename("thefolder/.foo.ibex.index.data",
> "thefolder/._2Efoo.ibex.index.data") = -1 ENOENT (No such file or
> directory)
> [pid  5275] stat("thefolder/.foo.ev-summary", 0x7f8f1abbe7e0) = -1
> ENOENT (No such file or directory)
> [pid  5275] stat("thefolder/.foo.ev-summary-meta", 0x7f8f1abbe7e0) =
> -1 ENOENT (No such file or directory)
> [pid  5275] stat("thefolder/.foo.cmeta", 0x7f8f1abbe7e0) = -1 ENOENT
> (No such file or directory)
> [pid  5275] stat("thefolder/.foo", {st_mode=S_IFDIR|0700,
> st_size=4096, ...}) = 0
> [pid  5275] rename("thefolder/.foo", "thefolder/._2Efoo") = 0
> [pid  5275] rename("thefolder/..ibex.index",
> "thefolder/._2E.ibex.index") = -1 ENOENT (No such file or directory)
> [pid  5275] rename("thefolder/..ibex.index.data",
> "thefolder/._2E.ibex.index.data") = -1 ENOENT (No such file or
> directory)
> [pid  5275] stat("thefolder/..ev-summary", 0x7f8f1abbe830) = -1 ENOENT
> (No such file or directory)
> [pid  5275] stat("thefolder/..ev-summary-meta", 0x7f8f1abbe830) = -1
> ENOENT (No such file or directory)
> [pid  5275] stat("thefolder/..cmeta", {st_mode=S_IFREG|0644,
> st_size=13, ...}) = 0
> [pid  5275] rename("thefolder/..cmeta", "thefolder/._2E.cmeta") = 0
> [pid  5275] stat("thefolder/.",  <unfinished ...>
> [pid  5275] <... stat resumed> {st_mode=S_IFDIR|0755,
> st_size=4096, ...}) = 0
> [pid  5275] rename("thefolder/.", "thefolder/._2E") = -1 EBUSY (Device
> or resource busy)
> [pid  5277] <... stat resumed> {st_mode=S_IFREG|0644,
> st_size=13, ...}) = 0
> [pid  5275] stat("thefolder/._2E.cmeta",  <unfinished ...>
> [pid  5275] <... stat resumed> {st_mode=S_IFREG|0644,
> st_size=13, ...}) = 0
> [pid  5275] rename("thefolder/._2E.cmeta", "thefolder/..cmeta") = 0
> [pid  5275] stat("thefolder/._2E.ev-summary", 0x7f8f1abbe830) = -1
> ENOENT (No such file or directory)
> [pid  5275] stat("thefolder/._2E.ev-summary-meta", 0x7f8f1abbe830) =
> -1 ENOENT (No such file or directory)
> [pid  5275] rename("thefolder/._2E.ibex.index",
> "thefolder/..ibex.index"Process 5282 attached
> Process 5283 attached
> ) = -1 ENOENT (No such file or directory)
> [pid  5275] rename("thefolder/._2E.ibex.index.data",
> "thefolder/..ibex.index.data") = -1 ENOENT (No such file or directory)
> 
> (evolution:5256): GLib-WARNING **: GError set over the top of a
> previous GError or uninitialized memory.
> This indicates a bug in someone's code. You must ensure an error is
> NULL before it's set.
> The overwriting error message was: Can't rename: «.»: No such file or
> directoty
> 
> (evolution:5256): GLib-CRITICAL **: g_file_set_contents: assertion
> 'error == NULL || *error == NULL' failed
> 
> (evolution:5256): camel-local-provider-WARNING **: Failed to save the
> maildir version in ‘thefolder/..maildir++’.
> 

_______________________________________________
evolution-list mailing list
evolution-list@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-list

Reply via email to