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 683406 - gnome-panel crashed with SIGSEGV in g_type_check_instance() from e-cal-view.c
gnome-panel crashed with SIGSEGV in g_type_check_instance() from e-cal-view.c
Status: RESOLVED OBSOLETE
Product: evolution-data-server
Classification: Platform
Component: Calendar
3.4.x (obsolete)
Other Linux
: Normal normal
: ---
Assigned To: evolution-calendar-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2012-09-05 11:15 UTC by Sam Morris
Modified: 2015-07-09 13:44 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
crash report (171.16 KB, text/plain)
2012-09-05 11:15 UTC, Sam Morris
Details
valgrind output (42.82 KB, text/plain)
2012-09-25 11:51 UTC, Sam Morris
Details

Description Sam Morris 2012-09-05 11:15:17 UTC
Created attachment 223517 [details]
crash report

attaching crash report since it's greater than 65k
Comment 1 Vincent Untz 2012-09-05 11:29:14 UTC
Interesting bit seems to imply it's an issue in eds:

  • #0 g_type_check_instance
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gtype.c line 4075
  • #1 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3083
  • #2 g_signal_emit
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3352
  • #3 g_cclosure_marshal_VOID__INTv
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gmarshal.c line 410
  • #4 _g_closure_invoke_va
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gclosure.c line 840
  • #5 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3207
  • #6 g_signal_emit
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3352
  • #7 complete_cb
    at e-cal-view.c line 196
  • #8 g_closure_invoke
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gclosure.c line 777
  • #9 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3547
  • #10 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3296
  • #11 g_signal_emit
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3352
  • #12 e_gdbus_proxy_emit_signal
    at e-gdbus-templates.c line 642
  • #13 ffi_call_unix64
    from /usr/lib/x86_64-linux-gnu/libffi.so.5
  • #14 ffi_call
    from /usr/lib/x86_64-linux-gnu/libffi.so.5
  • #15 g_cclosure_marshal_generic
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gclosure.c line 1454
  • #16 g_closure_invoke
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gclosure.c line 777
  • #17 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3585
  • #18 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3296
  • #19 g_signal_emit
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3352
  • #20 on_signal_received
    at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusproxy.c line 927
  • #21 emit_signal_instance_in_idle_cb
    at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusconnection.c line 3665
  • #22 g_main_dispatch
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 2539
  • #23 g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 3075
  • #24 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 3146
  • #25 g_main_loop_run
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 3340
  • #26 gtk_main
    at /tmp/buildd/gtk+3.0-3.4.2/./gtk/gtkmain.c line 1161
  • #27 main
    at main.c line 117

Comment 2 Milan Crha 2012-09-11 12:25:39 UTC
I guess this is issue in gnome-panel. The e-cal-view.c:complete_cb emits two signals, one is "view_done", the other is "view_complete". The gnome-panel's code listens for "view_done", thus I guess that's the signal which is emitted here (the line number also matches the "view_done" signal. The gnome-panel adds listener on it, but does not remove it when it's done with the view, thus the emit can be received on already freed memory (the signal is connected with g_signal_connect_swapped). Using valgrind may prove or falsify my theory, supposing you know how to reproduce this. I usually run valgrind like this:
   $ G_SLICE=always-malloc valgrind --num-callers=50 executable_name &>log.txt

Could you try to reproduce this under valgrind, please?
Comment 3 Sam Morris 2012-09-11 12:41:05 UTC
How do I arrange for gnome-panel to be launched under valgrind?

Sadly I can't reproduce this at will.
Comment 4 Milan Crha 2012-09-11 16:30:02 UTC
(In reply to comment #3)
> How do I arrange for gnome-panel to be launched under valgrind?

I do not know how that works. Maybe exchange its binary with a script, which will do it, like:
a) rename gnome-panel to gnome-panel.orig
b) create a text script which will be named gnome-panel in the same folder
   as the original one and which will contain:
   #!/bin/bash
   G_SLICE=always-malloc valgrind --num-callers=50 /path/to/gnome-panel.orig &>/tmp/gp.log

c) then run: chmod a+x gnome-panel
d) then restart or re-login, to take the change into effect. You may see
   significantly slower operations of gnome-panel.

P.S.: At b) the second script line is one long line, which wrapped here
Comment 5 Sam Morris 2012-09-25 11:51:42 UTC
Created attachment 225133 [details]
valgrind output
Comment 6 Milan Crha 2012-10-19 08:36:07 UTC
Thanks for the update. I see multiple use-after-free in gnome-panel from your valgrind log, which I filled as bug #686445 and bug #686446, but none of these caused this crash, it is done here:

Invalid read of size 8
   at 0x1CA179BB: reschedule_authenticate_cb (in /usr/lib/libecal-1.2.so.11.2.2)
   by 0x7B70204: g_main_context_dispatch (gmain.c:2539)
   by 0x7B70537: g_main_context_iterate.isra.23 (gmain.c:3146)
   by 0x7B70931: g_main_loop_run (gmain.c:3340)
   by 0x5A072D4: gtk_main (gtkmain.c:1161)
   by 0x424E9E: main (main.c:117)
 Address 0x1a63fa00 is 0 bytes inside a block of size 240 free'd
   at 0x4C27D4E: free (vg_replace_malloc.c:427)
   by 0x79079B4: g_type_free_instance (gtype.c:1937)
   by 0x1C79E803: calendar_sources_finalize_source_data.part.3 (calendar-sources.c:218)
   by 0x1C79E9D6: calendar_sources_finalize (calendar-sources.c:253)
   by 0x78EC697: g_object_unref (gobject.c:3018)
   by 0x1C79D3FE: calendar_client_finalize (calendar-client.c:450)
   by 0x78EC697: g_object_unref (gobject.c:3018)
   by 0x1C78E85D: calendar_window_dispose (calendar-window.c:1797)
   by 0x78ED79F: g_object_run_dispose (gobject.c:1061)
   by 0x1C793685: update_calendar_popup (clock.c:1215)
   by 0x78E7723: g_closure_invoke (gclosure.c:777)
   by 0x78F87AF: signal_emit_unlocked_R (gsignal.c:3547)
   by 0x790072B: g_signal_emit_valist (gsignal.c:3296)
   by 0x79008C1: g_signal_emit (gsignal.c:3352)
   by 0x5AD9AEE: gtk_toggle_button_clicked (gtktogglebutton.c:644)
   by 0x78E7A02: _g_closure_invoke_va (gclosure.c:840)
   by 0x7900075: g_signal_emit_valist (gsignal.c:3207)
   by 0x79008C1: g_signal_emit (gsignal.c:3352)
   by 0x5AD949C: gtk_toggle_button_released (gtktogglebutton.c:629)
   by 0x78E7723: g_closure_invoke (gclosure.c:777)
   by 0x78F80D2: signal_emit_unlocked_R (gsignal.c:3477)
   by 0x790072B: g_signal_emit_valist (gsignal.c:3296)
   by 0x79008C1: g_signal_emit (gsignal.c:3352)
   by 0x5947732: gtk_button_button_release (gtkbutton.c:1842)
   by 0x5A0839E: _gtk_marshal_BOOLEAN__BOXEDv (gtkmarshalers.c:130)
   by 0x78E7A02: _g_closure_invoke_va (gclosure.c:840)
   by 0x7900075: g_signal_emit_valist (gsignal.c:3207)
   by 0x79008C1: g_signal_emit (gsignal.c:3352)
   by 0x5B3041D: gtk_widget_event_internal (gtkwidget.c:6380)
   by 0x5A06304: propagate_event (gtkmain.c:2400)
   by 0x5A07F72: gtk_main_do_event (gtkmain.c:1713)
   by 0x5F5C001: gdk_event_source_dispatch (gdkeventsource.c:358)
   by 0x7B70204: g_main_context_dispatch (gmain.c:2539)
   by 0x7B70537: g_main_context_iterate.isra.23 (gmain.c:3146)
   by 0x7B70931: g_main_loop_run (gmain.c:3340)
   by 0x5A072D4: gtk_main (gtkmain.c:1161)
   by 0x424E9E: main (main.c:117)

From which I see that the calendar was authenticating, while the gnome-panel freed it, but the authentication process didn't notice that and caused the crash. This should be fixed in 3.6.0, because the whole authentication process is rewritten there.
Comment 7 Milan Crha 2015-07-09 13:44:49 UTC
No duplicates for a long time, let's close this.