After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 752144 - Crash in invalid_closure_notify()
Crash in invalid_closure_notify()
Status: RESOLVED OBSOLETE
Product: glib
Classification: Platform
Component: gobject
2.44.x
Other Linux
: Normal critical
: ---
Assigned To: gtkdev
gtkdev
: 763646 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2015-07-08 21:34 UTC by Paul Menzel
Modified: 2018-05-24 17:56 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
(gdb) t a a bt f (27.43 KB, text/plain)
2015-07-08 21:34 UTC, Paul Menzel
Details

Description Paul Menzel 2015-07-08 21:34:43 UTC
Created attachment 307109 [details]
(gdb) t a a bt f

Using Debian Sid/unstable with Evolution-Data-Server 3.16.3 (3.16.3-1+b1), during every run `evolution-calendar-factory-subprocess` terminates with a segmentation fault.

    evolution-calen[8161]: segfault at 18 ip b73ad4e9 sp aabfcff0 error 4 in libgobject-2.0.so.0.4400.1[b738f000+5c000]

When Evolution is started (in offline mode), I am getting some errors, that some calendars cannot be contacted. (And yes, they do not exist anymore, but I haven’t deleted them.) Here is the backtrace.

  • #0 invalid_closure_notify
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./gobject/gsignal.c line 3721
  • #1 g_closure_invalidate
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./gobject/gclosure.c line 256
  • #2 g_closure_invalidate
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./gobject/gclosure.c line 562
  • #3 e_soup_ssl_trust_message_finalized_cb
    at e-soup-ssl-trust.c line 117
  • #4 weak_refs_notify
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./gobject/gobject.c line 2629
  • #5 g_datalist_id_set_data_full
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./glib/gdataset.c line 407
  • #6 g_datalist_id_set_data_full
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./glib/gdataset.c line 670
  • #7 g_object_real_dispose
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./gobject/gobject.c line 1021
  • #8 g_object_unref
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./gobject/gobject.c line 3137
  • #9 open_calendar_wrapper
    at e-cal-backend-caldav.c line 1230
  • #10 open_calendar_wrapper
    at e-cal-backend-caldav.c line 2982
  • #11 caldav_authenticate_sync
    at e-cal-backend-caldav.c line 5422
  • #12 backend_source_authenticate_thread
    at e-backend.c line 239
  • #13 backend_source_authenticate_thread
    at e-backend.c line 300
  • #14 g_thread_proxy
    at /build/glib2.0-dCKQ11/glib2.0-2.44.1/./glib/gthread.c line 764
  • #15 start_thread
    at pthread_create.c line 309
  • #16 clone
    at ../sysdeps/unix/sysv/linux/i386/clone.S line 129

Comment 1 Milan Crha 2015-07-09 10:43:42 UTC
Thanks for a bug report. Thread 11 is in the end of the signal handlers destroy for an object (0xb30c1bc0) on which Thread 1 calls invalid_closure_notify(). It's done during the signal locking, as expected, just the invalid_closure_notify() doesn't count with such thread interleaving. According to the backtrace, your glib is 2.44.1.

From the evolution-data-server side, this crash caused an abort of the factory calendar subprocess, which took care of all the CalDAV calendars, thus these cannot be opened in the Evolution (they might be one by one, but once you choose the one which failed to open it can cause the crash again). I suppose it's one of the CalDAV calendars which is set for Reminders (Edit->Preferences->Calendars and Tasks->Reminders tab) and/or selected in the UI. The backtrce doesn't show what exactly failed during the calendar open, maybe an SSL certificate had been changed and the confirmation to trust it is requested.
Comment 2 Milan Crha 2016-03-15 11:08:38 UTC
*** Bug 763646 has been marked as a duplicate of this bug. ***
Comment 3 Milan Crha 2016-09-19 13:54:04 UTC
Downstream bug report about the same from evolution-data-server 3.20.5-3:
https://bugzilla.redhat.com/show_bug.cgi?id=1376583

A reproducer would be very valuable, though if it's a use-after-free, then it'll be pretty hard to get it.

Thread no. 1 (8 frames)
 #1 closure_invoke_notifiers at gclosure.c:274
 #2 g_closure_invalidate at gclosure.c:583
 #3 e_soup_ssl_trust_message_finalized_cb at e-soup-ssl-trust.c:118
 #4 weak_refs_notify at gobject.c:2636
 #6 caldav_server_list_objects at e-cal-backend-caldav.c:1681
 #7 caldav_synchronize_cache at e-cal-backend-caldav.c:2287
 #8 caldav_synch_slave_loop at e-cal-backend-caldav.c:2602
 #9 g_thread_proxy at gthread.c:780
Comment 4 GNOME Infrastructure Team 2018-05-24 17:56:05 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/glib/issues/1056.