Calendar: Crash on local calandar file change
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=2019566
When an underlying file of a local calendar changes in the system the a calendar factory process can crash. Valgrind gives a hint:
==24462== Invalid read of size 8
==24462== at 0x101E71109: icalcomponent_get_first_component (icalcomponent.c:546)
==24462== by 0x100CF5EE9: i_cal_component_get_first_component (i-cal-component.c:698)
==24462== by 0x1018E7007: e_cal_component_has_alarms (e-cal-component.c:3925)
==24462== by 0x101904F52: e_cal_util_generate_alarms_for_comp (e-cal-util.c:723)
==24462== by 0x10087452D: func_has_alarms_in_range (e-cal-backend-sexp.c:945)
==24462== by 0x10160D578: e_sexp_term_eval (e-sexp.c:802)
==24462== by 0x10160F665: e_sexp_eval (e-sexp.c:1699)
==24462== by 0x1008751E1: e_cal_backend_sexp_match_comp (e-cal-backend-sexp.c:1437)
==24462== by 0x10089E3DE: e_data_cal_view_component_matches (e-data-cal-view.c:997)
==24462== by 0x100866888: match_view_and_notify_component (e-cal-backend.c:261)
==24462== by 0x100866AA5: notify_changes_thread (e-cal-backend.c:316)
==24462== by 0x10086708B: cal_backend_dispatch_thread (e-cal-backend.c:446)
==24462== by 0x100968282: g_thread_pool_thread_proxy (gthreadpool.c:354)
==24462== by 0x100967ACB: g_thread_proxy (gthread.c:827)
==24462== by 0x10099B662: linux_pthread_proxy (gthread-posix.c:1269)
==24462== by 0x101733B16: start_thread (in /usr/lib64/libc.so.6)
==24462== by 0x1017B7933: clone (in /usr/lib64/libc.so.6)
==24462== Address 0x1253caf68 is 40 bytes inside a block of size 80 free'd
==24462== at 0x1008430E4: free (vg_replace_malloc.c:755)
==24462== by 0x101E7071F: icalcomponent_free (icalcomponent.c:225)
==24462== by 0x101E70640: icalcomponent_free (icalcomponent.c:202)
==24462== by 0x100D24C4D: i_cal_object_finalize (i-cal-object.c:197)
==24462== by 0x100C880FC: g_object_unref (gobject.c:3765)
==24462== by 0x115A8D3DF: free_calendar_components (e-cal-backend-file.c:289)
==24462== by 0x115A8F7CE: reload_cal (e-cal-backend-file.c:1359)
==24462== by 0x115A96347: e_cal_backend_file_reload (e-cal-backend-file.c:4083)
==24462== by 0x115A8ECB0: refresh_thread_func (e-cal-backend-file.c:1037)
==24462== by 0x100967ACB: g_thread_proxy (gthread.c:827)
==24462== by 0x10099B662: linux_pthread_proxy (gthread-posix.c:1269)
==24462== by 0x101733B16: start_thread (in /usr/lib64/libc.so.6)
==24462== by 0x1017B7933: clone (in /usr/lib64/libc.so.6)
==24462== Block was alloc'd at
==24462== at 0x10084086F: malloc (vg_replace_malloc.c:380)
==24462== by 0x101E702D0: icalcomponent_new_impl (icalcomponent.c:94)
==24462== by 0x101E7035A: icalcomponent_new (icalcomponent.c:113)
==24462== by 0x101E78E86: icalparser_add_line (icalparser.c:748)
==24462== by 0x101E78B2B: icalparser_parse (icalparser.c:641)
==24462== by 0x100D16E2A: i_cal_parser_parse (i-cal-parser.c:184)
==24462== by 0x1019041BC: e_cal_util_parse_ics_file (e-cal-util.c:303)
==24462== by 0x115A8F5FD: reload_cal (e-cal-backend-file.c:1312)
==24462== by 0x115A96347: e_cal_backend_file_reload (e-cal-backend-file.c:4083)
==24462== by 0x115A8ECB0: refresh_thread_func (e-cal-backend-file.c:1037)
==24462== by 0x100967ACB: g_thread_proxy (gthread.c:827)
==24462== by 0x10099B662: linux_pthread_proxy (gthread-posix.c:1269)
==24462== by 0x101733B16: start_thread (in /usr/lib64/libc.so.6)
==24462== by 0x1017B7933: clone (in /usr/lib64/libc.so.6)