Bug 157074

Summary: Segfault trying to sync calendar with an multi-day all-day event
Product: Red Hat Enterprise Linux 4 Reporter: Bastien Nocera <bnocera>
Component: evolutionAssignee: Dave Malcolm <dmalcolm>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 4.0   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: RHBA-2006-0002 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-03-07 18:31:34 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 136452, 168429    
Attachments:
Description Flags
evo-conduits-multi-day-crash.patch none

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
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 18:49:52 UTC
I've filed this upstream here:
http://bugzilla.gnome.org/show_bug.cgi?id=303702

Comment 3 Bastien Nocera 2005-05-10 21:53:29 UTC
Created attachment 114232 [details]
evo-conduits-multi-day-crash.patch

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:
https://www.redhat.com/archives/fedora-test-list/2005-August/msg00271.html

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.

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