GNOME Bugzilla – Bug 704220
Incorrect runtime check in e_data_cal_respond_send_objects()
Last modified: 2013-09-21 13:35:16 UTC
Steps to reproduce: - Create a meeting with attendees using your Google Calendar - In the Calendar view, drag the meeting to another cell - Click yes to send the change notification for the invitees - Boom, evolution is stuck Milan, Matthew, what kind of information do you need?
If you mean stuck as in the UI is frozen, then we need a GDB backtrace of Evolution ("thread apply all backtrace") with particular interest in Thread 1. A backtrace on the evolution-calendar-factory process wouldn't hurt either, just to see whether it's gone braindead. But even if it has, the UI should never be blocked. My bet's on the itip-formatter module.
I agree with Matthew, backtrace of the evolution and the calendar factory will show what it does. The itip-formatter is out of question, if I understood Fabiano's steps right, because it's only used in the Mail view, not in the Calendar view.
Evolution:
+ Trace 232239
Thread 1 (Thread 0x7ffff6572a00 (LWP 21707))
Calendar Factory:
+ Trace 232240
Thread 1 (Thread 0x7ffff72599c0 (LWP 21694))
And also this critical being printed: (evolution-calendar-factory:21694): libedata-cal-CRITICAL **: e_data_cal_respond_send_objects: assertion `component != NULL' failed
(In reply to comment #5) > And also this critical being printed: > (evolution-calendar-factory:21694): libedata-cal-CRITICAL **: > e_data_cal_respond_send_objects: assertion `component != NULL' failed This is the reason. The function which would notify about the result failed with a runtime check, which makes the client side (evolution) wait for a response until a DBus timeout is reached. Fix this warning and the other things should be fixed as well.
I'll fix this, I see Matthew broke it with his changes in EDataCal, specifically the sendObjects function does not return a single component, but a vCalendar, which the ECalComponent cannot hold, thus the added runtime check for component != NULL fails. Interestingly, the doc says multiple times that the returned component should be unreffed, but this is not done in places where result of e_cal_backend_send_objects_finish() is received (not counting the _sync variant of the function). The 3.8.x is safe, with this regard.
Created attachment 249256 [details] [review] eds patch for evolution-data-server; As expected, I changed API for e_cal_backend_send_objects_sync() and e_cal_backend_send_objects_finish(), which makes the meeting scheduling work again.
Created commit 9da1873 in eds master (3.9.5+)
Follow-up commit f9ee147, for e_cal_backend_get_object/_list(). (3.9.5+)
*** Bug 702749 has been marked as a duplicate of this bug. ***