Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

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