GNOME Bugzilla – Bug 623933
Crash under ESourceList::conf_changed_callback
Last modified: 2013-09-14 16:54:14 UTC
evolution 2.31.5 I have mapi account enabled. I am running e-calendar-factory and e-addressbook-factory in separate terminals. I have selected itip message. I go to edit -> preference and disable account, some how e-calendar-factory exits. Though e-addressbook-factory and evolution are running. Same happens when i try with groupwise account configured. Expected : e-calendar-factory shouldn't exit. (e-calendar-factory:15464): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed [Thread 0xb2fffb70 (LWP 15520) exited]
+ Trace 222766
Thread 3074942656 (LWP 15464)
Continuing. (e-calendar-factory:15464): e-data-server-CRITICAL **: e_source_group_peek_sources: assertion `E_IS_SOURCE_GROUP (group)' failed Bye. [Thread 0xb27feb70 (LWP 15508) exited] [Thread 0xb3987b70 (LWP 15505) exited] [Thread 0xb4188b70 (LWP 15503) exited] Program exited normally.
This might have something to do with it: http://git.gnome.org/browse/evolution-data-server/commit/?id=1c0ae704c7ffc58768553fef7bd88e25191cf836 The ESourceList signals for added or removed source groups were registered improperly. Can you retest with this change?
*** Bug 624132 has been marked as a duplicate of this bug. ***
I can still reproduce with steps mentioned in bug description. When i disable mapi account, i see these two warnings on e-calendar-factory terminal (e-calendar-factory:8378): GLib-GObject-CRITICAL **: g_value_get_object: assertion `G_VALUE_HOLDS_OBJECT (value)' failed (e-calendar-factory:8378): e-data-server-CRITICAL **: e_source_group_peek_sources: assertion `E_IS_SOURCE_GROUP (group)' failed at the same time, i see below debug message on evolution terminal. (evolution:8506): libecal-DEBUG: GDBus connection is closed, remote peer vanished gdb traces of e-calendar-factory (gdb) bt
+ Trace 223491
Continuing. (e-calendar-factory:8498): e-data-server-CRITICAL **: e_source_group_peek_sources: assertion `E_IS_SOURCE_GROUP (group)' failed Bye. [Thread 0xb1cfeb70 (LWP 8535) exited] [Thread 0xb14fdb70 (LWP 8536) exited] [Thread 0xb38fdb70 (LWP 8545) exited] [Thread 0xb0cfcb70 (LWP 8537) exited] [Thread 0xb24ffb70 (LWP 8534) exited] [Thread 0xb48ffb70 (LWP 8502) exited] Program exited normally.
*** Bug 634665 has been marked as a duplicate of this bug. ***
Created attachment 179430 [details] [review] eds patch for evolution-data-server; I cannot reproduce exactly this, but I saw something very close to it. The issue seems to be that the GConf receives notifications on idle, and the notification routine can take some time, depending on its listeners, so a change in a separate thread can then also unref the ESourceList, while the main thread is processing the GConf change signal, causing access of already freed memory. I cannot think of anything better that this change right now.
Created commit 07b4da9 in eds master (2.91.6+)
*** Bug 513031 has been marked as a duplicate of this bug. ***