[Evolution] Recovering from a mail causing Evo to crash (was: Re: Evolution not working - can't find a solution!)



Since you already mentioned in another post, that you managed to get Evo
into a sane state again by reverting to a recent backup, this issue kind
of is resolved already.

Anyway, I'd like to take the opportunity to write up some details about
issues like these.


On Thu, 2006-06-01 at 21:26 +0100, Peter Barnes wrote:
[...]
I put in the account the details and got back to normal. The email is
in Trash so I guess it may be possible to let you have it - but I've
gone and got myself back into the problem again! To see if the
offending email was there, in the View menu I switched off Preview and
switched on Message headers, then opened the Trash folder.

It was there and I clicked it once - no problem. Clicked it twice to
view it and got the warning message and could only close Evo.

Of course. Displaying the mail caused the crash before -- and you just
opened the mail in an external window, displaying it, by the double
click.

I opened Evo again and decided the best thing was to ask you what to
do with the message. But that's when I went wrong - I guess I'm
getting tired. To revert to normal, I went to the View menu and
switched Preview on and Message headers off. But I forgot I still had
the Trash folder set and the "bad" email was still selected in the
list!

I've used the commands again as above:
[...]

but they don't work now. When I start Evo, the Preview pane is still
open and the warning message appears and freezes everything. Do I need
different commands because the Trash folder is open?

When I get Evo back to normal I will forward the offending email if
you can explain the best (safest!) way to do it.

There is no special command needed for the Trash folder. The issue is,
that this option now is stored on a per folder basis, rather than
globally only.



Recovering from a mail causing Evo to crash
===========================================

As has been mentioned before, the first step is to disable the global
(pre)view option. With the (pre)view pane disabled, Evo will not render
(display) the currently selected mail when started, thus avoiding
displaying the mail that crashes Evo.

$ gconftool-2 --set /apps/evolution/mail/display/show_preview --type bool 0

However, this will *not* solve this always, unfortunately. When toggling
the (pre)view pane, Evo can get into a state where it maintains this
information on a per folder basis [1].

If this is the case, you can find the per folder setting being stored in
the .cmeta file accompanying the mail folder.

Local mails are stored in the ~/.evolution/mail/local/ directory, which
is pretty much what you see under the "On This Computer" node. Every
mail folder (like Inbox) got a file there named exactly as the folder.
Note: This file holds your actual mails! Be careful with those files.
Beside that, there are a couple of files with added extensions, like the
Inbox.* ones. Those files hold meta and indexing data only, the latter
being recreated if missing.

In this case, we are interested in the *.cmeta files, which hold per
folder states like a saved search or this (pre)view setting we are
after.

If the FOLDER.cmeta file for a mail folder named FOLDER maintains such a
per folder state, the *.cmeta file will contain the string
"show_preview", which you can check for if you like.


Now, where to find those files exactly?

As already mentioned, for the average local mail folder, these .cmeta
files can be found in the ~/.evolution/mail/local/ directory. If you are
looking for a particular folder that is a subfolder, just dig deeper
into the SUBFOLDER.sbd/ directory, for any subfolder named SUBFOLDER...

In case of the Search Folders (vFolder), this is slightly different. For
your tree of custom Search Folders, you can find them in the directory
~/.evolution/mail/vfolder/. The (system internal) special Trash and Junk
vFolders are a little different yet again: Their meta data is stored in 

  ~/.evolution/mail/local/.#evolution.sbd/

Now that's where we want to go. You can find the Trash.cmeta file in
there.


If the global disabling of the (pre)view pane does not work, we need to
disable the global option again (see the gconftool-2 command above) and
get rid of the .cmeta file which is in our way. (That should be
the .cmeta file for the mail folder that was last opened.)

Starting Evo after doing both, should result in the (pre)view pane now
finally disabled.


Since I was talking about recovering from a crashing mail in general:
Now is the time to save (File / Save Message) the offending mail for
later autopsy, and deleting it -- and probably emptying the trash
(File / Empty Trash) to really get rid of the little bugger that caused
so much trouble.


I hope this will be helpful for others, too. Man, I need to find some
time to collect and review all those articles I have written in the
past. Plus some that still are on my todo list...

...guenther


[1] Which really is useful when dealing with a lot of mail folders and
    mails, but this is quite off-topic here. ;)

-- 
char *t="\10pse\0r\0dtu\0  ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4";
main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1:
(c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]