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 570765 - gnome panel hangs after clicked on the clock applet
gnome panel hangs after clicked on the clock applet
Status: RESOLVED FIXED
Product: evolution-data-server
Classification: Platform
Component: Calendar
2.26.x (obsolete)
Other Linux
: High critical
: ---
Assigned To: evolution-calendar-maintainers
Evolution QA team
: 572197 (view as bug list)
Depends on: 572169
Blocks:
 
 
Reported: 2009-02-06 09:35 UTC by Pedro Villavicencio
Modified: 2013-09-14 16:52 UTC
See Also:
GNOME target: 2.26.x
GNOME version: 2.25/2.26


Attachments
proposed eds patch (1.10 KB, patch)
2009-02-13 18:47 UTC, Milan Crha
committed Details | Review

Description Pedro Villavicencio 2009-02-06 09:35:20 UTC
i was looking to some appointments with the clock applet and it hanged i'm attaching the backtrace:

Thread 1 (Thread 0xb6c47750 (LWP 9024))

  • #0 __kernel_vsyscall
  • #1 pthread_cond_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #2 e_flag_wait
    at e-flag.c line 120
  • #3 e_cal_get_query
  • #4 calendar_client_start_query
  • #5 calendar_client_update_appointments
    at calendar-client.c line 1584
  • #6 IA__g_cclosure_marshal_VOID__VOID
    at /build/buildd/glib2.0-2.19.6/gobject/gmarshal.c line 77
  • #7 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.19.6/gobject/gclosure.c line 767
  • #8 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.19.6/gobject/gsignal.c line 3244
  • #9 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.19.6/gobject/gsignal.c line 2977
  • #10 IA__g_signal_emit
    at /build/buildd/glib2.0-2.19.6/gobject/gsignal.c line 3034
  • #11 calendar_sources_load_esource_list
    at calendar-sources.c line 525
  • #12 backend_restart
    at calendar-sources.c line 421
  • #13 g_timeout_dispatch
    at /build/buildd/glib2.0-2.19.6/glib/gmain.c line 3253
  • #14 IA__g_main_context_dispatch
    at /build/buildd/glib2.0-2.19.6/glib/gmain.c line 1814
  • #15 g_main_context_iterate
    at /build/buildd/glib2.0-2.19.6/glib/gmain.c line 2448
  • #16 IA__g_main_loop_run
    at /build/buildd/glib2.0-2.19.6/glib/gmain.c line 2656
  • #17 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #18 main
    at main.c line 147
  • #0 __kernel_vsyscall

Comment 1 Matthew Barnes 2009-02-06 12:49:09 UTC
First thread is querying the calendar, and several other threads are trying to open the calendar.  I have a hunch that evolution-data-server is crashing and so the process never responds to the clock applet.  I also started noticing this myself after I installed evolution-mapi, but that may be a coincidence.

Can you try connecting GDB to the evolution-data-server process and then repeat this applet hang?  Let's see if e-d-s segfaults.
Comment 2 Pedro Villavicencio 2009-02-11 11:23:05 UTC
Already did it the backtrace is:

Thread 1 (Thread 0xb6f6b730 (LWP 10611))

  • #0 clone
    from /lib/tls/i686/cmov/libc.so.6
  • #1 ??
  • #2 ??
    from /usr/lib/libgthread-2.0.so.0
  • #3 g_thread_create_full
    from /usr/lib/libglib-2.0.so.0
  • #4 soup_dns_lookup_resolve_async
    from /usr/lib/libsoup-2.4.so.1
  • #5 soup_address_resolve_async
    from /usr/lib/libsoup-2.4.so.1
  • #6 ??
    from /usr/lib/libsoup-2.4.so.1
  • #7 ??
    from /usr/lib/libsoup-2.4.so.1
  • #8 ??
    from /usr/lib/libglib-2.0.so.0
  • #9 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #10 ??
    from /usr/lib/libglib-2.0.so.0
  • #11 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #12 bonobo_main
    at bonobo-main.c line 311
  • #13 main
    at server.c line 417
  • #0 __kernel_vsyscall
  • #0 __kernel_vsyscall
  • #1 raise
    from /lib/tls/i686/cmov/libc.so.6
  • #2 abort
    from /lib/tls/i686/cmov/libc.so.6
  • #3 __assert_fail
    from /lib/tls/i686/cmov/libc.so.6
  • #4 icalerror_set_errno
    from /usr/lib/libical.so.0
  • #5 icalcomponent_new_clone
    from /usr/lib/libical.so.0
  • #6 e_cal_backend_file_open
    at e-cal-backend-file.c line 951
  • #7 e_cal_backend_sync_open
    at e-cal-backend-sync.c line 186
  • #8 _e_cal_backend_open
    at e-cal-backend-sync.c line 706
  • #9 e_cal_backend_open
    at e-cal-backend.c line 613
  • #10 impl_Cal_open
    at e-data-cal.c line 80
  • #11 _ORBIT_skel_small_GNOME_Evolution_Calendar_Cal_open
    at Evolution-DataServer-Calendar-common.c line 44
  • #12 ORBit_POAObject_invoke
    at poa.c line 1148
  • #13 ORBit_OAObject_invoke
    at orbit-adaptor.c line 340
  • #14 ORBit_small_invoke_adaptor
    at orbit-small.c line 846
  • #15 ORBit_POAObject_handle_request
    at poa.c line 1357
  • #16 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1427
  • #17 giop_thread_queue_process
    at giop.c line 792
  • #18 giop_request_handler_thread
    at giop.c line 502
  • #19 g_thread_pool_thread_proxy
    at /build/buildd/glib2.0-2.19.6/glib/gthreadpool.c line 265
  • #20 g_thread_create_proxy
    at /build/buildd/glib2.0-2.19.6/glib/gthread.c line 635
  • #21 start_thread
    from /lib/tls/i686/cmov/libpthread.so.0
  • #22 clone
    from /lib/tls/i686/cmov/libc.so.6

Comment 3 Vincent Untz 2009-02-12 17:34:14 UTC
Was it with a calendar requiring authentication? If yes, does it happen with 2.25.90? I fixed some similar bug there.
Comment 4 Sebastien Bacher 2009-02-12 17:44:23 UTC
one ubuntu user confirmed having the issue on GFNOME 2.25.90 using non authentified calendars, only local and publuc webdav ones are configured 
Comment 5 Sebastien Bacher 2009-02-12 17:46:08 UTC
the user has calendar which require authentification configured but not enabled
Comment 6 Sebastien Bacher 2009-02-12 17:50:55 UTC
do you need extra details out of looking for e-d-s crashers?
Comment 7 Sebastien Bacher 2009-02-12 17:51:49 UTC
do you need extra details out of looking for e-d-s crashers?
Comment 8 Sebastien Bacher 2009-02-12 17:52:13 UTC
sorry about the duplicate comments enough spam for today
Comment 9 Sebastien Bacher 2009-02-12 22:45:39 UTC
just got the issue on jaunty using GNOME 2.25.90, evolution-data-server was running for a while and didn't crash or exit, evolution was still working correctly, using no non-local calendar
Comment 10 Martin Pitt 2009-02-13 09:53:27 UTC
I have two google calendars which need authentication, and I get the issue as well. However, it it still happens if I disable the calendars in evo (I didn't delete them, though).
Comment 11 Vincent Untz 2009-02-13 14:33:28 UTC
If something is wrong in the applet code itself, I'd appreciate help. But my guess would be something in eds, though.
Comment 12 Sebastien Bacher 2009-02-13 14:40:52 UTC
what informations would be useful there? knowning that the issue happen often and for lot of users in GNOME 2.25.90, that e-d-s doesn't crash and that it hangs gnome-panel which pretty much stuck users
Comment 13 Milan Crha 2009-02-13 18:47:10 UTC
Created attachment 128661 [details] [review]
proposed eds patch

for evolution-data-server;

It crashes in libical. Not for me, even I see the same thing, with my tasks. They have set UTC timezone, and this one doesn't have inner component, thus we are passing NULL into icalcomponent_new_clone, which is considered as a fatal error, thus libical aborts. (once again, not for me - thus it depends on the configure flags). Nonetheless, this fixes it.

Recommendation for gnome-applet: I do not know how much possible, but if you will do e_cal_get_query on other than main thread, then a) you'll not block whole panel on slow calendars/tasks; b) you will be notified properly of the eds crash; c) (-) you'll need more accurate async code, which could be difficult/boring/....
If I recall correctly, notification of crashed eds are receive to the program on idle, thus when your main thread is "busy", then this notification waits to be delivered, and you've just a bad luck here.
Comment 14 Vincent Untz 2009-02-13 19:01:48 UTC
(In reply to comment #13)
> Recommendation for gnome-applet: I do not know how much possible, but if you
> will do e_cal_get_query on other than main thread, then a) you'll not block
> whole panel on slow calendars/tasks; b) you will be notified properly of the
> eds crash; c) (-) you'll need more accurate async code, which could be
> difficult/boring/....

Hrm. Can't we get some e_cal_get_query_async() function instead? :-) It sounds bad to require knowledge of the internals like this to use the API.
Comment 15 Milan Crha 2009-02-16 10:22:49 UTC
(In reply to comment #14)
> (In reply to comment #13)
> > Recommendation for gnome-applet: I do not know how much possible, but if you
> > will do e_cal_get_query on other than main thread, then a) you'll not block
> > whole panel on slow calendars/tasks; b) you will be notified properly of the
> > eds crash; c) (-) you'll need more accurate async code, which could be
> > difficult/boring/....
> 
> Hrm. Can't we get some e_cal_get_query_async() function instead? :-) It sounds
> bad to require knowledge of the internals like this to use the API.

I do not think these are any specific internals of Evolution. The b) is about ORBit, not about Evolution. And the rest is quite common for any slow operations, isn't it?
Comment 16 Vincent Untz 2009-02-16 12:00:14 UTC
(In reply to comment #15)
> (In reply to comment #14)
> > (In reply to comment #13)
> > > Recommendation for gnome-applet: I do not know how much possible, but if you
> > > will do e_cal_get_query on other than main thread, then a) you'll not block
> > > whole panel on slow calendars/tasks; b) you will be notified properly of the
> > > eds crash; c) (-) you'll need more accurate async code, which could be
> > > difficult/boring/....
> > 
> > Hrm. Can't we get some e_cal_get_query_async() function instead? :-) It sounds
> > bad to require knowledge of the internals like this to use the API.
> 
> I do not think these are any specific internals of Evolution. The b) is about
> ORBit, not about Evolution. And the rest is quite common for any slow
> operations, isn't it?

How am I supposed to know it's slow? Or that it uses ORBit? :-)
(if it's slow, it should get an async version, that's my point)
Comment 17 Sebastien Bacher 2009-02-17 09:08:04 UTC
hum, the change is not in 2.25.91? any reason for not commiting it to svn?
Comment 18 Milan Crha 2009-02-17 14:04:28 UTC
(In reply to comment #17)
> hum, the change is not in 2.25.91? any reason for not commiting it to svn?

It waits for its review, even it's a one-liner. (To be honest, I forgot of it.)
Comment 19 Baptiste Mille-Mathias 2009-02-17 15:48:09 UTC
I'm raising Priority and set the target to gnome-2.26, I think Andre will catch it in its showstopper list :)
Comment 20 Vincent Untz 2009-02-17 15:50:22 UTC
What's the proper way of requesting an async version of e_cal_get_query()? Do you want me to open a new bug, or is this one fine?
Comment 21 Milan Crha 2009-02-17 16:45:42 UTC
(In reply to comment #20)
> What's the proper way of requesting an async version of e_cal_get_query()? Do
> you want me to open a new bug, or is this one fine?

From my point of view it's an API extension, and as such deserves its own bug report. (It doesn't mean I think it'll be done.)
Comment 22 Vincent Untz 2009-02-17 17:05:06 UTC
I filed bug 572169. Thanks.
Comment 23 Milan Crha 2009-02-18 17:16:41 UTC
Committed to trunk. Committed revision 10073.

Sebastien told me it works fine for one of his testers, thus putting it in.
Comment 24 Milan Crha 2009-02-25 15:15:33 UTC
*** Bug 572197 has been marked as a duplicate of this bug. ***