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
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: evolution (Show other bugs)
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:
Last Closed: 2006-03-07 13:31:34 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

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
                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:
Comment 3 Bastien Nocera 2005-05-10 17:53:29 EDT
Created attachment 114232 [details]
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:
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.


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