GNOME Bugzilla – Bug 344776
Evolution 2.6.2 hangs/crashes on almost anything with an Exchange server account
Last modified: 2006-08-21 21:41:42 UTC
Steps to reproduce: 1. Start Evolution 2. It will authenticate to Exchange successfully, start scanning folders, retrieving messages, etc. (which takes a long time), then I see a large CPU spike that stays at 100%, with zero network activity, and the application is just hung. Sometimes it crashes, and sometimes it loses connectivity to the backend process. 3. Kill everything and restart, and sometimes it will make to where I can start using it, like reading e-mails, but within the first two or three e-mails it will hang on a delete, or move message operation, or any operation for that matter. Stack trace: Other information: I am running Evolution 2.6.2 on Fedora Core 5 with all the latest patches applied.
I'm experiencing the same bug with a 100% fail rate. Same OS. Same patches. Same versions. Evolution was fine this morning before I updated. 2.6.1 was fine, and even reliable. Also, earlier this week I was experiencing Bug 333228, 344196, 334373, 332979 and other issues. I run evolution with camel debug turned on and get get a 100% reproducible crash in the same location, every single time. If I use a different client and change the amount of email in the Inbox, the crash happens with a slightly different folder. It appears the exchange storage is doing a hand coded assert() here. I can run any other debug you would like. $ CAMEL_VERBOSE_DEBUG=1 evolution .... CamelStore('exchange://jthorne;auth=NTLM@LAYER7-MX0/;filter_junk;ad_server=mail.l7tech.com;owa_url=https://mail/exchange;save-passwd=true;mailbox=jthorne;owa_path=/exchange;filter;filter_junk_inbox'):get_folder('personal/Customer Support/AG', 0) = 0xe96c18 < 40c05940 > camel-exchange-provider-ERROR **: file camel-exchange-store.c: line 1098 (stub_notification): should not be reached aborting...
known issue. One patch has been commited to cvs already. so this needs to be tested in 2.6.3. Leaving it open so that we can test the fix and close it.
Please get the gdb traces for evolution when it crashes or hangs, using the gdb command "thread apply all bt" If the traces are different for hang and crash, please paste both of them. See http://live.gnome.org/GettingTraces for details.
Created attachment 67493 [details] Screen host of CPU going to 100% when Evolution hangs. This is a screenshot of the CPU going to 100% when Evolution hangs.
Created attachment 67494 [details] GDB thread backtrace for Evolution when hung. This is the GDB backtrace for all threads when Evolution is hung after going to 100% CPU. One thing to note, is that UI still can be clicked on to do something, but nothing ever happens.
Created attachment 67495 [details] GDB thread backtrace for the evolution data server 1.6 when hung. This is the GDB thread backtrace for the evolution data server 1.6 process after Evolution starts to consume 100% CPU and is hung.
Created attachment 67496 [details] GDB thread backtrace for the evolution exchange storage when hung. This is the GDB thread backtrace for the evolution exchange storage process after Evolution starts to consume 100% CPU and is hung.
Created attachment 67497 [details] This is the stacktrace from Bug Buddy when Evolution crashes. I have managed to reproduce the crash situation, and I have attached the stack trace from Bug Buddy when it crashed instead of just hanging.
Created attachment 67499 [details] This is the stacktrace from GDB when Evolution crashes instead of hanging. When Evolution crashes instead of hanging the behavior is interesting. After the crash, maybe 1 minute or so, the CPU utilization goes to 100%, just like during a hang. It turns out that the exchange storage process is the one consuming all the CPU. After a minute or so, and after you I captured the bug buddy trace, and closed everything, the CPU utilization returned to normal.
this should be fixed in CVS as of a few hours ago, didn't realise there was a bugzilla.gnome.org bug report about it or I would have updated it sooner :) the fix was: Index: camel/camel-stub-marshal.c =================================================================== RCS file: /cvs/gnome/evolution-exchange/camel/camel-stub-marshal.c,v retrieving revision 1.2.8.2 diff -u -r1.2.8.2 camel-stub-marshal.c --- camel/camel-stub-marshal.c 2 Jun 2006 19:08:35 -0000 1.2.8.2 +++ camel/camel-stub-marshal.c 15 Jun 2006 20:27:23 -0000 @@ -86,7 +86,8 @@ static gboolean do_read (CamelStubMarshal *marshal, char *buf, size_t len) { - size_t n, nread = 0; + size_t nread = 0; + ssize_t n; do { if ((n = camel_read (marshal->fd, buf + nread, len - nread)) > 0)
Thanks for the fix here. I have been successfully using Evolution against my Exchange account today, and everything is working as expected now. Much better stability and performance. Thanks for the great work!!!!