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 732909 - 9c37b3de ("Don't use GObjectClass.constructor") breaks empathy
9c37b3de ("Don't use GObjectClass.constructor") breaks empathy
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: General
unspecified
Other Linux
: High blocker
: ---
Assigned To: empathy-maint
empathy-maint
: 733639 734900 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2014-07-08 17:03 UTC by Frederic Peters
Modified: 2014-08-16 09:46 UTC
See Also:
GNOME target: 3.14
GNOME version: ---


Attachments
libempathy-gtk: chain GtkCombobox subclass constructors to parent (1.63 KB, patch)
2014-07-09 12:47 UTC, Frederic Peters
committed Details | Review

Description Frederic Peters 2014-07-08 17:03:29 UTC
For a while empathy has been crashing on startup; I have now bisected it to this particular commit.

commit 9c37b3de7466a22d4c784657a86c522e2a4f118a
Author: Jasper St. Pierre <jstpierre@mecheye.net>
Date:   Thu Jun 26 18:22:42 2014 -0400

    gtk: Don't use GObjectClass.constructor
    
    Use the newer constructed instead, which has a fast path in GObject.

Here's the empathy trace:

Program terminated with signal SIGSEGV, Segmentation fault.
  • #0 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5932
  • #0 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5932
  • #1 gtk_widget_size_allocate
    at gtkwidget.c line 6151
  • #2 gtk_combo_box_size_allocate
    at gtkcombobox.c line 2701
  • #3 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #4 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #5 _g_closure_invoke_va
    at gclosure.c line 831
  • #6 g_signal_emit_valist
    at gsignal.c line 3218
  • #7 g_signal_emit
    at gsignal.c line 3365
  • #8 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 6075
  • #9 gtk_box_size_allocate_no_center
    at gtkbox.c line 798
  • #10 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #11 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #12 _g_closure_invoke_va
    at gclosure.c line 831
  • #13 g_signal_emit_valist
    at gsignal.c line 3218
  • #14 g_signal_emit
    at gsignal.c line 3365
  • #15 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 6075
  • #16 gtk_box_size_allocate_no_center
    at gtkbox.c line 798
  • #17 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #18 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #19 _g_closure_invoke_va
    at gclosure.c line 831
  • #20 g_signal_emit_valist
    at gsignal.c line 3218
  • #21 g_signal_emit
    at gsignal.c line 3365
  • #22 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 6075
  • #23 gtk_widget_size_allocate
    at gtkwidget.c line 6151
  • #24 gtk_window_size_allocate
    at gtkwindow.c line 7310
  • #25 gtk_application_window_real_size_allocate
    at gtkapplicationwindow.c line 641
  • #26 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #27 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #28 _g_closure_invoke_va
    at gclosure.c line 831
  • #29 g_signal_emit_valist
    at gsignal.c line 3218
  • #30 g_signal_emit
    at gsignal.c line 3365
  • #31 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 6075
  • #32 gtk_widget_size_allocate
    at gtkwidget.c line 6151
  • #33 gtk_window_show
    at gtkwindow.c line 5664
  • #34 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #35 g_type_class_meta_marshal
    at gclosure.c line 961
  • #36 g_closure_invoke
    at gclosure.c line 768
  • #37 signal_emit_unlocked_R
    at gsignal.c line 3483
  • #38 g_signal_emit_valist
    at gsignal.c line 3309
  • #39 g_signal_emit
    at gsignal.c line 3365
  • #40 gtk_widget_show
    at gtkwidget.c line 4851
  • #41 tpaw_window_present_with_time
    at tpaw-utils.c line 246
  • #42 tpaw_window_present
    at tpaw-utils.c line 254
  • #43 empathy_app_activate
    at empathy.c line 345
  • #44 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #45 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #46 _g_closure_invoke_va
    at gclosure.c line 831
  • #47 g_signal_emit_valist
    at gsignal.c line 3218
  • #48 g_signal_emit
    at gsignal.c line 3365
  • #49 g_application_activate
    at gapplication.c line 2011
  • #50 empathy_app_local_command_line
    at empathy.c line 476
  • #51 g_application_run
    at gapplication.c line 2188
  • #52 main
    at empathy.c line 842

Comment 1 Matthias Clasen 2014-07-09 10:32:39 UTC
This is a (latent) empathy bug that we've now made visible: it doesn't chain up in constructed, see empathy.c:740
Comment 2 Frederic Peters 2014-07-09 12:47:56 UTC
Created attachment 280256 [details] [review]
libempathy-gtk: chain GtkCombobox subclass constructors to parent
Comment 3 Frederic Peters 2014-07-09 12:49:33 UTC
I only did it to those causing direct crashes, that is the GtkCombobox subclasses (EmpathyAccountChooser and EmpathyProtocolChooser), a full review of all classes would certainly be necessary.
Comment 4 Frederic Peters 2014-07-24 06:20:32 UTC
*** Bug 733639 has been marked as a duplicate of this bug. ***
Comment 5 Nathaniel McCallum 2014-07-24 14:31:55 UTC
This patch works, please merge it. I get a similar crash if Google Talk accounts are enabled. I'll file a separate bug for that.
Comment 6 Debarshi Ray 2014-08-12 12:38:02 UTC
Review of attachment 280256 [details] [review]:

This looks obviously correct and fixes the problem. Plus cassidy gave his blessings in #empathy on GIMPNet:

12:34 <rishi> http://bugzilla.gnome.org/show_bug.cgi?id=732909
12:37 <cassidy> oh yeah I have to look at it. But if the patch works for you    
      feel free to merge it tbh
Comment 7 Frederic Peters 2014-08-16 09:46:39 UTC
*** Bug 734900 has been marked as a duplicate of this bug. ***