Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 157074 - Segfault trying to sync calendar with an multi-day all-day event
Summary: Segfault trying to sync calendar with an multi-day all-day event
Alias: None
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: evolution
Version: 4.0
Hardware: All
OS: Linux
Target Milestone: ---
: ---
Assignee: Dave Malcolm
QA Contact:
Depends On:
Blocks: FC3Update 168429
TreeView+ depends on / blocked
Reported: 2005-05-06 16:37 UTC by Bastien Nocera
Modified: 2007-11-30 22:07 UTC (History)
0 users

Fixed In Version: RHBA-2006-0002
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2006-03-07 18:31:34 UTC
Target Upstream Version:

Attachments (Terms of Use)
evo-conduits-multi-day-crash.patch (deleted)
2005-05-10 21:53 UTC, Bastien Nocera
no flags Details | Diff

System ID Priority Status Summary Last Updated
GNOME Bugzilla 303702 None None None Never
Red Hat Product Errata RHBA-2006:0002 qe-ready SHIPPED_LIVE evolution bug fix update 2006-03-06 05:00:00 UTC

Description Bastien Nocera 2005-05-06 16:37:42 UTC
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 10:29:56 UTC
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 18:49:52 UTC
I've filed this upstream here:

Comment 3 Bastien Nocera 2005-05-10 21:53:29 UTC
Created attachment 114232 [details]

Comment 11 Dave Malcolm 2005-08-26 21:42:23 UTC
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 23:53:36 UTC
Test update for FC3 here:

Comment 18 Dave Malcolm 2005-11-30 19:18:41 UTC
Upstream committed a slightly different patch with better-looking error-handling.

Comment 23 Red Hat Bugzilla 2006-03-07 18:31:35 UTC
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.