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 532737 - using *_run_* calls prevents quitting Empathy
using *_run_* calls prevents quitting Empathy
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: General
0.23.x
Other All
: Normal major
: ---
Assigned To: empathy-maint
empathy-maint
: 576565 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-05-12 11:21 UTC by Alban Crequy
Modified: 2009-09-17 10:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
no more _run_ for you, buddy (5.38 KB, patch)
2009-08-22 17:35 UTC, Will Thompson
committed Details | Review

Description Alban Crequy 2008-05-12 11:21:26 UTC
Please describe the problem:
When I select "Chat -> Quit" in the menu, nothing happens.

Steps to reproduce:
1. Start Empathy
2. Set your presence to Available
3. When your contacts start to appear but before getting all your contacts, set your presence to Offline
4. Check that Gabble and Mission Control processes terminate
5. If you run GDB on Empathy, you see in the stack that it waits on empathy_run_until_ready although we are offline and Gabble/MC don't run anymore
6. Set your presence to Available
7. Menu Chat -> Quit


Actual results:
Cannot quit

Expected results:
Menu Chat->Quit should always work

Does this happen every time?
Yes

Other information:
stack at step 5.

  • #0 poll
    from /lib/libc.so.6
  • #1 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.16.3/glib/gmain.c line 2951
  • #2 IA__g_main_loop_run
    at /tmp/buildd/glib2.0-2.16.3/glib/gmain.c line 2850
  • #3 empathy_run_until_ready_full
    at empathy-utils.c line 607
  • #4 empathy_run_until_ready
    at empathy-utils.c line 620
  • #5 tp_contact_list_add_channel
    at empathy-tp-contact-list.c line 402
  • #6 tp_contact_list_new_channel_cb
    at empathy-tp-contact-list.c line 531
  • #7 _tp_cli_connection_invoke_callback_for_new_channel
    at _gen/tp-cli-connection-body.h line 90
  • #8 tp_proxy_signal_invocation_run
    at proxy-signals.c line 255
  • #9 IA__g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.16.3/glib/gmain.c line 2009
  • #10 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.16.3/glib/gmain.c line 2642
  • #11 IA__g_main_loop_run
    at /tmp/buildd/glib2.0-2.16.3/glib/gmain.c line 2850
  • #12 tp_channel_run_until_ready
    at channel.c line 650

etc.

smcv: "tp_*_run_until_ready has a hook for getting the main loop in order to be able to cancel, added specifically for the "how do I exit when things aren't ready?" use case"
Comment 1 Xavier Claessens 2008-05-16 11:07:44 UTC
I think empathy shouldn't use *_run_* API, it's full of problems.
Comment 2 Xavier Claessens 2009-03-24 14:02:11 UTC
*** Bug 576565 has been marked as a duplicate of this bug. ***
Comment 3 Will Thompson 2009-08-22 17:34:53 UTC
My branch at <http://git.collabora.co.uk/?p=user/wjt/empathy.git;a=shortlog;h=refs/heads/unrun> gets rid of the last two uses of _run_. It's completely untested. :P
Comment 4 Will Thompson 2009-08-22 17:35:29 UTC
Created attachment 141435 [details] [review]
no more _run_ for you, buddy
Comment 5 Cosimo Cecchi 2009-09-17 10:40:35 UTC
This seems to work fine, merged to master, thanks for the patch.