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 737575 - Panel crashes when trying to click on clock applet
Panel crashes when trying to click on clock applet
Status: RESOLVED FIXED
Product: gnome-panel
Classification: Other
Component: clock
3.8.x
Other Linux
: Normal normal
: ---
Assigned To: Panel Maintainers
Panel Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-09-29 11:12 UTC by Dmitry Shachnev
Modified: 2014-11-14 17:09 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Valgrind log (25.96 KB, text/plain)
2014-11-07 14:31 UTC, Dmitry Shachnev
Details

Description Dmitry Shachnev 2014-09-29 11:12:03 UTC
Using gnome-panel 3.8.1-4 from Debian.

Steps to reproduce the crash:

- Add some locations to the clock applet.
- Disconnect from the Internet.
- (Re)start the gnome-panel.
- Click on the clock applet.

Backtrace:

  • #0 clock_needs_face_refresh
    at clock-location-tile.c line 372
  • #1 clock_location_tile_refresh
    at clock-location-tile.c line 552
  • #2 create_cities_section
    at clock.c line 704
  • #3 update_calendar_popup
    at clock.c line 778
  • #4 g_cclosure_marshal_VOID__VOID
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gmarshal.c line 85
  • #5 g_closure_invoke
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 768
  • #6 signal_emit_unlocked_R
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3553
  • #7 g_signal_emit_valist
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3309
  • #8 g_signal_emit
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #9 gtk_toggle_button_toggled
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #10 gtk_toggle_button_clicked
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #11 g_cclosure_marshal_VOID__VOIDv
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gmarshal.c line 115
  • #12 g_type_class_meta_marshalv
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 988
  • #13 _g_closure_invoke_va
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #14 g_signal_emit_valist
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #15 g_signal_emit
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #16 gtk_button_clicked
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #17 gtk_button_do_release
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #18 gtk_real_button_released
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #19 g_cclosure_marshal_VOID__VOID
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gmarshal.c line 85
  • #20 g_type_class_meta_marshal
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 961
  • #21 g_closure_invoke
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 768
  • #22 signal_emit_unlocked_R
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3483
  • #23 g_signal_emit_valist
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3309
  • #24 g_signal_emit
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #25 multipress_released_cb
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #26 ffi_call_SYSV
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #27 ffi_call
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #28 g_cclosure_marshal_generic_va
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 1541
  • #29 _g_closure_invoke_va
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #30 g_signal_emit_valist
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #31 g_signal_emit
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #32 gtk_gesture_multi_press_end
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #33 g_cclosure_marshal_VOID__BOXEDv
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gmarshal.c line 1160
  • #34 g_type_class_meta_marshalv
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 988
  • #35 _g_closure_invoke_va
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #36 g_signal_emit_valist
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #37 g_signal_emit
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #38 _gtk_gesture_set_recognized
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #39 _gtk_gesture_check_recognized
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #40 gtk_gesture_handle_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #41 gtk_gesture_single_handle_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #42 gtk_event_controller_handle_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #43 _gtk_widget_run_controllers
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #44 gtk_widget_real_button_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #45 _gtk_marshal_BOOLEAN__BOXEDv
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #46 g_type_class_meta_marshalv
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 988
  • #47 _g_closure_invoke_va
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #48 g_signal_emit_valist
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #49 g_signal_emit
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #50 gtk_widget_event_internal
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #51 gtk_widget_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #52 propagate_event_up
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #53 propagate_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #54 gtk_propagate_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #55 gtk_main_do_event
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #56 _gdk_event_emit
    from /usr/lib/i386-linux-gnu/libgdk-3.so.0
  • #57 gdk_event_source_dispatch
    from /usr/lib/i386-linux-gnu/libgdk-3.so.0
  • #58 g_main_dispatch
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./glib/gmain.c line 3111
  • #59 g_main_context_dispatch
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./glib/gmain.c line 3710
  • #60 g_main_context_iterate
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./glib/gmain.c line 3781
  • #61 g_main_loop_run
    at /build/glib2.0-GCwfCT/glib2.0-2.42.0/./glib/gmain.c line 3975
  • #62 gtk_main
    from /usr/lib/i386-linux-gnu/libgtk-3.so.0
  • #63 main
    at main.c line 115

Comment 1 Dmitry Shachnev 2014-11-07 14:31:12 UTC
Created attachment 290167 [details]
Valgrind log

I can still reproduce this crash with gnome-panel 3.14.0.

Attached is the Valgrind log. The errors start happening after I click the applet, no errors before that.
Comment 2 Alberts Muktupāvels 2014-11-09 01:22:08 UTC
Have you tried to find what exactly is causing crash?

Will you be able to test with 3.15? I am rewriting ClockFace and ClockLocationTitle with hope that this bug will be fixed.
Comment 3 Dmitry Shachnev 2014-11-11 07:34:24 UTC
(In reply to comment #2)
> Have you tried to find what exactly is causing crash?

`priv` is null pointer, and the code tries to dereference it. Unfortunately I don't know Gtk+ enough to know why it was deleted, but the Valgrind log should be very informative.

> Will you be able to test with 3.15? I am rewriting ClockFace and
> ClockLocationTitle with hope that this bug will be fixed.

The crash is still there with current master :-(

New backtrace (pasting plain so that Bugzilla can recognize it):

  • #0 clock_needs_face_refresh
    at clock-location-tile.c line 361
  • #1 clock_location_tile_refresh
    at clock-location-tile.c line 544
  • #2 create_cities_section
    at clock.c line 704
  • #3 update_calendar_popup
    at clock.c line 776
  • #4 g_cclosure_marshal_VOID__VOID
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gmarshal.c line 85
  • #5 g_closure_invoke
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 768
  • #6 signal_emit_unlocked_R
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3553
  • #7 g_signal_emit_valist
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3309
  • #8 g_signal_emit
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #9 gtk_toggle_button_toggled
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtktogglebutton.c line 520
  • #10 gtk_toggle_button_clicked
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtktogglebutton.c line 605
  • #11 g_cclosure_marshal_VOID__VOIDv
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gmarshal.c line 115
  • #12 g_type_class_meta_marshalv
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 988
  • #13 _g_closure_invoke_va
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #14 g_signal_emit_valist
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #15 g_signal_emit
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #16 gtk_button_clicked
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkbutton.c line 1479
  • #17 gtk_button_do_release
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkbutton.c line 1890
  • #18 gtk_real_button_released
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkbutton.c line 2008
  • #19 g_cclosure_marshal_VOID__VOID
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gmarshal.c line 85
  • #20 g_type_class_meta_marshal
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 961
  • #21 g_closure_invoke
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 768
  • #22 signal_emit_unlocked_R
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3483
  • #23 g_signal_emit_valist
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3309
  • #24 g_signal_emit
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #25 multipress_released_cb
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkbutton.c line 611
  • #26 ffi_call_SYSV
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #27 ffi_call
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #28 g_cclosure_marshal_generic_va
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 1541
  • #29 _g_closure_invoke_va
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #30 g_signal_emit_valist
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #31 g_signal_emit
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #32 gtk_gesture_multi_press_end
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkgesturemultipress.c line 273
  • #33 g_cclosure_marshal_VOID__BOXEDv
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gmarshal.c line 1160
  • #34 g_type_class_meta_marshalv
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 988
  • #35 _g_closure_invoke_va
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #36 g_signal_emit_valist
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #37 g_signal_emit
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #38 _gtk_gesture_set_recognized
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkgesture.c line 275
  • #39 _gtk_gesture_check_recognized
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkgesture.c line 315
  • #40 gtk_gesture_handle_event
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkgesture.c line 624
  • #41 gtk_gesture_single_handle_event
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkgesturesingle.c line 218
  • #42 gtk_event_controller_handle_event
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkeventcontroller.c line 214
  • #43 _gtk_widget_run_controllers
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkwidget.c line 7428
  • #44 _gtk_marshal_BOOLEAN__BOXEDv
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkmarshalers.c line 130
  • #45 g_type_class_meta_marshalv
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 988
  • #46 _g_closure_invoke_va
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gclosure.c line 831
  • #47 g_signal_emit_valist
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3218
  • #48 g_signal_emit
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./gobject/gsignal.c line 3365
  • #49 gtk_widget_event_internal
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkwidget.c line 7773
  • #50 propagate_event_up
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkmain.c line 2424
  • #51 propagate_event
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkmain.c line 2526
  • #52 gtk_main_do_event
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkmain.c line 1748
  • #53 _gdk_event_emit
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gdk/gdkevents.c line 69
  • #54 gdk_event_source_dispatch
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gdk/x11/gdkeventsource.c line 364
  • #55 g_main_dispatch
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./glib/gmain.c line 3111
  • #56 g_main_context_dispatch
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./glib/gmain.c line 3710
  • #57 g_main_context_iterate
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./glib/gmain.c line 3781
  • #58 g_main_loop_run
    at /build/glib2.0-BmD7JP/glib2.0-2.42.0/./glib/gmain.c line 3975
  • #59 gtk_main
    at /build/gtk+3.0-pgcpza/gtk+3.0-3.14.4/./gtk/gtkmain.c line 1207
  • #60 main
    at main.c line 155

Comment 4 Alberts Muktupāvels 2014-11-11 11:44:41 UTC
(In reply to comment #3)
> > Will you be able to test with 3.15? I am rewriting ClockFace and
> > ClockLocationTitle with hope that this bug will be fixed.
> 
> The crash is still there with current master :-(

Please test with wip/applets/clock.
Comment 5 Dmitry Shachnev 2014-11-12 19:07:58 UTC
With that branch I can't reproduce the crash.

However, now sometimes (maybe one time of two) I get my location listed twice after I click on the clock applet (tested offline). In the preferences dialog it is listed only once.

Will it be possible to have a minimal patch to fix the crash, for Debian Jessie / Ubuntu SRU?
Comment 6 Alberts Muktupāvels 2014-11-13 13:02:42 UTC
(In reply to comment #5)
> With that branch I can't reproduce the crash.

Nice.

> However, now sometimes (maybe one time of two) I get my location listed twice
> after I click on the clock applet (tested offline). In the preferences dialog
> it is listed only once.

This might help find real problem. I plan to rewrite other parts so this probably will be fixed.

> Will it be possible to have a minimal patch to fix the crash, for Debian Jessie
> / Ubuntu SRU?

I did not plan this, but above info could help to find real problem. I did not change how ClockLocationTile[s] are created.

When I will have time I will try to solve this first in master.
Comment 7 Alberts Muktupāvels 2014-11-13 22:30:52 UTC
Could you test both master and wip branch after you remove this line:
https://git.gnome.org/browse/gnome-panel/tree/applets/clock/clock.c#n1216

1. In master just test if it does not crash and there is no visible regression. After setting current city there is no reason to update settings nor any reason to recreate cities store.

2. In wip branch check if this fix problem with locations listed twice.

I have no access to my main pc, I can not test master nor wip branch. 

P.S. This bug probably is regression since this commit:
https://git.gnome.org/browse/gnome-panel/commit/applets/clock/clock.c?id=96e1070f3c7c69282283b19d6b7b5ef93a10fe15
Comment 8 Dmitry Shachnev 2014-11-14 07:25:27 UTC
master — still crashing

wip/applets/clock — I don't see any new commits, did you push them?
Comment 9 Alberts Muktupāvels 2014-11-14 11:00:57 UTC
I did not push this to wip nor to master. Before testing remove that line - save_cities_store.
Comment 10 Dmitry Shachnev 2014-11-14 16:50:02 UTC
Oh sorry, I did not read first line of your message.

Everything seems to be fixed after removing that line — crash with master, and double entry with wip/applets/clock. Thanks a lot for debugging!

I still have some Valgrind warnings printed (different this time), but these seem to be related to rsvg code, not gnome-panel code.

Once the patch is in master, I will prepare a gnome-panel upload for Debian testing with this fix. Let me know if there is something else you would like me to include.
Comment 11 Alberts Muktupāvels 2014-11-14 17:05:38 UTC
(In reply to comment #10)
> Oh sorry, I did not read first line of your message.
> 
> Everything seems to be fixed after removing that line — crash with master, and
> double entry with wip/applets/clock. Thanks a lot for debugging!

Nice to hear.

> I still have some Valgrind warnings printed (different this time), but these
> seem to be related to rsvg code, not gnome-panel code.

Wip branch does not depend on rsvg code anymore. I have removed this dependency by rewriting ClockFace.

> Once the patch is in master, I will prepare a gnome-panel upload for Debian
> testing with this fix. Let me know if there is something else you would like me
> to include.

Ok, pushed to master.

You can include this one:
https://git.gnome.org/browse/gnome-panel/commit/?id=6ca0e5dee4142d7995827b28ff674006ee3f8dd4
Comment 12 Dmitry Shachnev 2014-11-14 17:09:17 UTC
(In reply to comment #11)
> > I still have some Valgrind warnings printed (different this time), but these
> > seem to be related to rsvg code, not gnome-panel code.
> 
> Wip branch does not depend on rsvg code anymore. I have removed this dependency
> by rewriting ClockFace.

It uses it indirectly:

...
0xEBB0759: rsvg_handle_get_pixbuf (rsvg.c:119)
0xBF96AC0: gdk_pixbuf__svg_image_stop_load (io-svg.c:160)
0x4B1B998: gdk_pixbuf_loader_close (in libgdk_pixbuf-2.0.so.0)
0x4B1958C: gdk_pixbuf_new_from_stream_at_scale (in libgdk_pixbuf-2.0.so.0)
0x4B198A1: gdk_pixbuf_new_from_resource_at_scale (in libgdk_pixbuf-2.0.so.0)
0xBF41245: clock_face_get_pixbuf (clock-face.c:212)
0xBF41B12: clock_face_hour_changed (clock-face.c:239)
...