Bug 157074 - Segfault trying to sync calendar with an multi-day all-day event
Segfault trying to sync calendar with an multi-day all-day event
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: evolution (Show other bugs)
4.0
All Linux
medium Severity medium
: ---
: ---
Assigned To: Dave Malcolm
:
Depends On:
Blocks: FC3Update 168429
  Show dependency treegraph
 
Reported: 2005-05-06 12:37 EDT by Bastien Nocera
Modified: 2007-11-30 17:07 EST (History)
0 users

See Also:
Fixed In Version: RHBA-2006-0002
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2006-03-07 13:31:34 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)
evo-conduits-multi-day-crash.patch (692 bytes, patch)
2005-05-10 17:53 EDT, Bastien Nocera
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
GNOME Desktop 303702 None None None Never

  None (edit)
Description Bastien Nocera 2005-05-06 12:37:42 EDT
1. Create a new event in evolution
2. Select "all day event"
3. Make the end date a date at least a day older than the start date
4. Make sure that "Split multi-day events" is enabled in the ECalendar conduit
4. Launch a sync

(gpilotd:26204): libecal-CRITICAL **: file e-cal-component.c: line 1100
(e_cal_component_get_icalcomponent): assertion `priv->need_sequence_inc ==
FALSE' failed
Segmentation fault

An all day event that stays within a day doesn't crash.
With "Split multi-day events" disabled, the event(s) aren't synced at all.
Comment 1 Bastien Nocera 2005-05-09 06:29:56 EDT
The snippet of code causing the crash in the conduit is probably in
process_multi_day():
                dt_end.value = &end_value;
                e_cal_component_set_dtend (clone, &dt_end);

                /* FIXME Error handling */                 e_cal_create_object
(ctxt->client, e_cal_component_get_icalcomponent (clone), NULL, NULL);

e_cal_component_set_dtend sets priv->need_sequence_inc = TRUE;
but e_cal_component_get_icalcomponent has the assert: g_return_val_if_fail
(priv->need_sequence_inc == FALSE, NULL);

So this can't possibly ever work correctly.

One possible fix is probably:
+ e_cal_component_commit_sequence (clone);
in between the e_cal_component_set_dtend() and the
e_cal_component_get_icalcomponent() calls.

The "Split multi-day events" is probably another problem, in that same function.
Reassigning to evolution, as the conduits is actually there.
Comment 2 Dave Malcolm 2005-05-10 14:49:52 EDT
I've filed this upstream here:
http://bugzilla.gnome.org/show_bug.cgi?id=303702
Comment 3 Bastien Nocera 2005-05-10 17:53:29 EDT
Created attachment 114232 [details]
evo-conduits-multi-day-crash.patch
Comment 11 Dave Malcolm 2005-08-26 17:42:23 EDT
Adding patch to rawhide; built as evolution-2.3.8-3
Adding patch to FC-3 for an update; building as evolution-2.0.4-7
Comment 12 Dave Malcolm 2005-08-26 19:53:36 EDT
Test update for FC3 here:
https://www.redhat.com/archives/fedora-test-list/2005-August/msg00271.html
Comment 18 Dave Malcolm 2005-11-30 14:18:41 EST
Upstream committed a slightly different patch with better-looking error-handling.
Comment 23 Red Hat Bugzilla 2006-03-07 13:31:35 EST
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2006-0002.html

Note You need to log in before you can comment on or make changes to this bug.