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 594654 - empathy crashed with SIGSEGV in empathy_account_settings_get_default()
empathy crashed with SIGSEGV in empathy_account_settings_get_default()
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: Accounts
2.27.x
Other Linux
: Normal critical
: ---
Assigned To: empathy-maint
Depends on:
Blocks:
 
 
Reported: 2009-09-09 15:19 UTC by Pedro Villavicencio
Modified: 2009-10-19 11:11 UTC
See Also:
GNOME target: 2.28.x
GNOME version: 2.27/2.28


Attachments
proposed fix: http://git.collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/get-protocol-594654 (2.12 KB, patch)
2009-10-19 11:00 UTC, Guillaume Desmottes
committed Details | Review

Description Pedro Villavicencio 2009-09-09 15:19:40 UTC
this report has been filed here:

https://bugs.edge.launchpad.net/ubuntu/+source/empathy/+bug/424903

"Empathy crashed when enabling jabber encryption."

".

Thread 1 (process 4141)

  • #0 empathy_account_settings_get_tp_param
    at empathy-account-settings.c line 522
  • #1 empathy_account_settings_get_default
    at empathy-account-settings.c line 562
  • #2 empathy_account_settings_get_boolean
    at empathy-account-settings.c line 801
  • #3 account_widget_checkbutton_toggled_cb
    at empathy-account-widget.c line 236
  • #4 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.5/gobject/gclosure.c line 767
  • #5 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3247
  • #6 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 2980
  • #7 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3037
  • #8 gtk_toggle_button_clicked
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtktogglebutton.c line 498
  • #9 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.5/gobject/gclosure.c line 767
  • #10 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3177
  • #11 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 2980
  • #12 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3037
  • #13 gtk_toggle_button_released
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtktogglebutton.c line 485
  • #14 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.5/gobject/gclosure.c line 767
  • #15 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3177
  • #16 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 2980
  • #17 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3037
  • #18 gtk_button_button_release
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkbutton.c line 1599
  • #19 _gtk_marshal_BOOLEAN__BOXED
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmarshalers.c line 84
  • #20 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.5/gobject/gclosure.c line 767
  • #21 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3285
  • #22 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 2990
  • #23 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.5/gobject/gsignal.c line 3037
  • #24 gtk_widget_event_internal
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkwidget.c line 4786
  • #25 IA__gtk_propagate_event
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmain.c line 2396
  • #26 IA__gtk_main_do_event
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmain.c line 1601
  • #27 gdk_event_dispatch
    at /build/buildd/gtk+2.0-2.17.10/gdk/x11/gdkevents-x11.c line 2379
  • #28 IA__g_main_context_dispatch
    at /build/buildd/glib2.0-2.21.5/glib/gmain.c line 1960
  • #29 g_main_context_iterate
    at /build/buildd/glib2.0-2.21.5/glib/gmain.c line 2591
  • #30 IA__g_main_loop_run
    at /build/buildd/glib2.0-2.21.5/glib/gmain.c line 2799
  • #31 IA__gtk_main
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmain.c line 1205
  • #32 main
    at empathy.c line 739

Comment 1 Guillaume Desmottes 2009-09-09 16:16:35 UTC
Can you easily reproduce this crash? I look at the code and didn't see any reason why it would crash.
Comment 2 Pedro Villavicencio 2009-09-09 16:48:10 UTC
will ask and come back to you, Thanks Guillaume
Comment 4 Jonny Lamb 2009-10-17 13:23:59 UTC
I've been able to reproduce this in the past by loading gstreamer-properties during or after a call, or something like that... I couldn't understand why it crashed then.

I guess we could work around this by adding a if (priv == NULL) return; for now if it's causing lots of crashers. After all, the only thing this callback does is update the GtkProgressBar slider.

Thoughts, Guillaume?
Comment 5 Guillaume Desmottes 2009-10-19 10:04:34 UTC
Jonny: are you sure your commented on the right bug? This crash is in empathy-account-settings.c not in the audio/video code :)
Comment 6 Guillaume Desmottes 2009-10-19 10:17:35 UTC
Reading the stack traces, the crash seems to be because tp_params has an invalid value (0x33 doesn't look like a valid pointer).
This pointer is find using priv->tp_protocol which is set in empathy_account_settings_check_readyness () using tp_connection_manager_get_protocol().

But according to tp_connection_manager_get_protocol's documentation:
"The result is not necessarily valid after the main loop is re-entered"

So maybe that's the cause of the problem.
Comment 7 Guillaume Desmottes 2009-10-19 11:00:50 UTC
Created attachment 145777 [details] [review]
proposed fix: http://git.collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/get-protocol-594654

 libempathy/empathy-account-settings.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)
Comment 8 Guillaume Desmottes 2009-10-19 11:10:55 UTC
Fixed in 2.28 (will be in 2.28.1) and master.