GNOME Bugzilla – Bug 661979
Crash in e_ews_connection_sync_folder_items_start at e-ews-connection.c:1838
Last modified: 2012-04-23 07:01:05 UTC
Evolution 3.2.1 + Exchange 2007 1. Clicked on a meeting request (itip format message) 2. It was showing 'opening a calendar ...' string in message preview 3. Waited for 30 seconds 4. Clicked on calendar in switcher 5. Clicked on contacts in switcher, quickly before it could open calendar view 6. Evolution crashed Program received signal SIGSEGV, Segmentation fault.
+ Trace 228823
Thread 4 (Thread 0xb49feb70 (LWP 28545))
Similar downstream bug report from 3.2.2: https://bugzilla.redhat.com/show_bug.cgi?id=767437 User's steps: My calendar has never updated since connecting to the exchange server with evolution-ews. I have left it open for ages. I can send mail using my mail account. Three lines appear under my address heading in the calendar view. They say "BCX", "Calendar" and again "Calendar". I un-ticked the boxes, waited 5 seconds, then ticked them again. At that moment the calendar crash appeared.
Created attachment 203488 [details] [review] proposed ews patch for evolution-ews; Could you try with this patch please? I wasn't able to reproduce exactly this crash, but a similar one, thus maybe this will help here too. Thanks in advance.
Created attachment 207063 [details] [review] updated ews patch for evolution-ews; The previous patch was using uninitialized memory in ews_get_attachments_ready_callback()
Review of attachment 207063 [details] [review]: Am fine with rest of the fix, except one concern. The similar fix has to be done with address-book as well which would fix this bug. While the delta thread runs in address-book the connection object seems to be null. This bug also exposes the need for input parameter checks in EwsConnection API's. ::: src/server/e-ews-connection.c @@ +340,3 @@ ews_trigger_next_request(cnc); + /* to not have a race when this holds the last reference to cnc */ + g_idle_add (unref_in_idle_cb, ews_node->simple); How does this has to do with cnc ? g_object_unref (ews_node->simple); would just remove the EwsAsyncData struct isn it?
(In reply to comment #4) > ::: src/server/e-ews-connection.c > @@ +340,3 @@ > ews_trigger_next_request(cnc); > + /* to not have a race when this holds the last reference to cnc */ > + g_idle_add (unref_in_idle_cb, ews_node->simple); > > How does this has to do with cnc ? g_object_unref (ews_node->simple); would > just remove the EwsAsyncData struct isn it? Hmm, I do not recall what made me think this change is useful, and checking now you are right, this has nothing to do with 'cnc'. I'll drop it from the patch.
Created attachment 210152 [details] [review] ews patch ]I[ for evolution-ews; Updated patch, with changes which Chen requested. It's quite boring reading, I only removed the strange chunk from e-ews-connection, and added parameter checks on cnc != NULL in the same file, then I updated the book backend, to use a global cancellable where is none provided by the API.
Created commit 4c27486 in ews master (3.5.1+)