! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
Xfce4-whiskermenu-plugin Crashes With BAD desktop file
Status:
RESOLVED: FIXED
Product:
Xfce4-whiskermenu-plugin
Component:
General

Comments

Description Öyvind Saether 2020-02-02 22:25:42 CET
Xfce4-whiskermenu-plugin git from today kept on crashing when clicking a folder in the menu. I narrowed this down to a very bad desktop file.

1) create ~/.local/share/applications/crash.desktop with:

[Desktop Entry]
Version=1.0.0
Type=Application
Name=CrashForFun
GenericName=Crashing
Comment=
Exec=/bin/false
Icon=/usr/local/share/icons/what/ever.svg
Categories=Other;
Terminal=false

Note the Icon line. You are NOT supported to do what. NO. no-no using a full path to an icon like that.

2) click the other folder in current xfce4-whiskermenu-plugin

3) The CRASH, see below.

I feel compelled to point out that you're NOT supposed to be doing "Icon=/usr/local/share/icons/what/ever.svg". However, kernelshark.desktop looks like:

[Desktop Entry]
Version=1.0.0
Type=Application
Name=Kernel Shark
GenericName=Kernel Shark
Comment=
Exec=/usr/local/bin/kernelshark
Icon=/usr/local/share/icons/kernelshark/KS_icon_shark.svg
Categories=System;
Terminal=false

and I installed the kernelshark at some point which is why I ran into this problem. It is something users could run into if they install software with desktop files who are doing the wrong thing. That is technically a bug in .. their software. Still, it could/should be handled better. The regular panel menu handles it by not showing an icon (there is an icon indicating missing icon). whiskermenu just crashes.

NOTE: It does not seem to make any difference if the icon referenced with a full path and an extension exists or not. 

0x00007f07251faa6f in __GI___poll (fds=0x93ab30, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29	  return SYSCALL_CANCEL (poll, fds, nfds, timeout);
Missing separate debuginfos, use: dnf debuginfo-install gvfs-client-1.42.2-1.fc31.x86_64
(gdb) c
Continuing.
[New Thread 0x7f0715631700 (LWP 1951316)]

Thread 1 "panel-30-whiske" received signal SIGSEGV, Segmentation fault.
INT_cairo_image_surface_get_width (surface=surface@entry=0x0) at cairo-image-surface.c:615
615	    if (! _cairo_surface_is_image (surface)) {
(gdb) bt
#0  INT_cairo_image_surface_get_width (surface=surface@entry=0x0) at cairo-image-surface.c:615
#1  0x00007f0725fe0a3b in whiskermenu_icon_renderer_render(GtkCellRenderer*, cairo_t*, GtkWidget*, GdkRectangle const*, GdkRectangle const*, GtkCellRendererState)
    (renderer=<optimized out>, cr=0x9ca600, widget=<optimized out>, cell_area=0x7ffcd8b3a1b0)
    at /home/oyvinds/src/xfce4/xfce4-whiskermenu-plugin/panel-plugin/icon-renderer.cpp:141
#2  0x00007f07259f1358 in gtk_cell_renderer_render
    (cell=0xbbc460 [WhiskerMenuIconRenderer], cr=0x9ca600, widget=0xb88890 [GtkIconView], background_area=0x7ffcd8b3a2d0, cell_area=0x7ffcd8b3a1b0, flags=(unknown: 0)) at gtkcellrenderer.c:833
#3  0x00007f07259e7653 in render_cell
    (renderer=0xbbc460 [WhiskerMenuIconRenderer], cell_area=cell_area@entry=0x7ffcd8b3a2c0, cell_background=cell_background@entry=0x7ffcd8b3a2d0, data=data@entry=0x7ffcd8b3a340) at gtkcellarea.c:1147
#4  0x00007f07259ea302 in gtk_cell_area_box_foreach_alloc
    (area=<optimized out>, context=<optimized out>, widget=<optimized out>, cell_area=<optimized out>, background_area=<optimized out>, callback=<optimized out>, callback_data=<optimized out>) at gtkcellareabox.c:1291
#5  0x00007f07259e718e in gtk_cell_area_real_render
    (area=0xbb7340 [GtkCellAreaBox], context=0x7f070c011850 [GtkCellAreaBoxContext], widget=0xb88890 [GtkIconView], cr=0x9ca600, background_area=0x7ffcd8b3a3e0, cell_area=0x7ffcd8b3a3e0, flags=(unknown: 0), paint_focus=1)
    at gtkcellarea.c:1189
#6  0x00007f0725abda6c in gtk_icon_view_paint_item
    (icon_view=icon_view@entry=0xb88890 [GtkIconView], cr=cr@entry=0x9ca600, item=item@entry=0xa2c740, x=742, y=181, draw_focus=1) at gtkiconview.c:3159
#7  0x00007f0725ac2dca in gtk_icon_view_draw (widget=0xb88890 [GtkIconView], cr=0x9ca600)
    at gtkiconview.c:1907
#8  0x00007f0725c388d4 in gtk_widget_draw_internal
    (clip_to_size=1, cr=0x9ca600, widget=0xb88890 [GtkIconView]) at gtkwidget.c:7080
#9  gtk_widget_draw_internal
    (widget=widget@entry=0xb88890 [GtkIconView], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#10 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xb96b60 [GtkScrolledWindow], child=0xb88890 [GtkIconView], cr=cr@entry=0x9ca600) at gtkcontainer.c:3853
#11 0x00007f0725a195fd in gtk_container_draw (widget=0xb96b60 [GtkScrolledWindow], cr=0x9ca600)
    at gtkcontainer.c:3673
#12 0x00007f0725b6d03d in gtk_scrolled_window_render
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, data=0x0) at gtkscrolledwindow.c:2103
#13 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
#14 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xbbc580 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#15 0x00007f0725b6b305 in gtk_scrolled_window_draw (widget=<optimized out>, cr=<optimized out>)
    at gtkscrolledwindow.c:3030
--Type <RET> for more, q to quit, c to continue without paging--
#16 0x00007f0725c388d4 in gtk_widget_draw_internal
    (clip_to_size=1, cr=0x9ca600, widget=0xb96b60 [GtkScrolledWindow]) at gtkwidget.c:7080
#17 gtk_widget_draw_internal
    (widget=widget@entry=0xb96b60 [GtkScrolledWindow], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1) at gtkwidget.c:7018
#18 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xafd600 [GtkStack], child=0xb96b60 [GtkScrolledWindow], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3853
#19 0x00007f0725b8d246 in gtk_stack_render
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, data=0x0) at gtkstack.c:2207
#20 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
#21 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xbe1920 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#22 0x00007f0725b8cdf9 in gtk_stack_draw (widget=<optimized out>, cr=<optimized out>) at gtkstack.c:2119
#23 0x00007f0725c388d4 in gtk_widget_draw_internal (clip_to_size=1, cr=0x9ca600, widget=0xafd600 [GtkStack])
    at gtkwidget.c:7080
#24 gtk_widget_draw_internal
    (widget=widget@entry=0xafd600 [GtkStack], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#25 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xaf2b10 [GtkBox], child=0xafd600 [GtkStack], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3853
#26 0x00007f0725a195fd in gtk_container_draw (widget=0xaf2b10 [GtkBox], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3673
#27 0x00007f07259ca268 in gtk_box_draw_contents
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, unused=0x0) at gtkbox.c:453
#28 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
#29 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xbd6770 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#30 0x00007f07259ccba5 in gtk_box_draw (widget=<optimized out>, cr=<optimized out>) at gtkbox.c:462
#31 0x00007f0725c388d4 in gtk_widget_draw_internal (clip_to_size=1, cr=0x9ca600, widget=0xaf2b10 [GtkBox])
    at gtkwidget.c:7080
#32 gtk_widget_draw_internal
    (widget=widget@entry=0xaf2b10 [GtkBox], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#33 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xafd420 [GtkStack], child=0xaf2b10 [GtkBox], cr=cr@entry=0x9ca600)
--Type <RET> for more, q to quit, c to continue without paging--
    at gtkcontainer.c:3853
#34 0x00007f0725b8d246 in gtk_stack_render
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, data=0x0) at gtkstack.c:2207
#35 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
#36 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xbd6670 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#37 0x00007f0725b8cdf9 in gtk_stack_draw (widget=<optimized out>, cr=<optimized out>) at gtkstack.c:2119
#38 0x00007f0725c388d4 in gtk_widget_draw_internal (clip_to_size=1, cr=0x9ca600, widget=0xafd420 [GtkStack])
    at gtkwidget.c:7080
#39 gtk_widget_draw_internal
    (widget=widget@entry=0xafd420 [GtkStack], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#40 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xaf2590 [GtkBox], child=0xafd420 [GtkStack], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3853
#41 0x00007f0725a195fd in gtk_container_draw (widget=0xaf2590 [GtkBox], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3673
#42 0x00007f07259ca268 in gtk_box_draw_contents
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, unused=0x0) at gtkbox.c:453
#43 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
#44 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xbc8700 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#45 0x00007f07259ccba5 in gtk_box_draw (widget=<optimized out>, cr=<optimized out>) at gtkbox.c:462
#46 0x00007f0725c388d4 in gtk_widget_draw_internal (clip_to_size=1, cr=0x9ca600, widget=0xaf2590 [GtkBox])
    at gtkwidget.c:7080
#47 gtk_widget_draw_internal
    (widget=widget@entry=0xaf2590 [GtkBox], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#48 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xafd240 [GtkStack], child=0xaf2590 [GtkBox], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3853
#49 0x00007f0725b8d246 in gtk_stack_render
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, data=0x0) at gtkstack.c:2207
#50 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
--Type <RET> for more, q to quit, c to continue without paging--
#51 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xafa500 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#52 0x00007f0725b8cdf9 in gtk_stack_draw (widget=<optimized out>, cr=<optimized out>) at gtkstack.c:2119
#53 0x00007f0725c388d4 in gtk_widget_draw_internal (clip_to_size=1, cr=0x9ca600, widget=0xafd240 [GtkStack])
    at gtkwidget.c:7080
#54 gtk_widget_draw_internal
    (widget=widget@entry=0xafd240 [GtkStack], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#55 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xafb1a0 [GtkFrame], child=0xafd240 [GtkStack], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3853
#56 0x00007f0725a195fd in gtk_container_draw (widget=0xafb1a0 [GtkFrame], cr=0x9ca600) at gtkcontainer.c:3673
#57 0x00007f0725a9c8b3 in gtk_frame_render
    (gadget=<optimized out>, cr=0x9ca600, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, data=0x0) at gtkframe.c:775
#58 0x00007f0725a1e891 in gtk_css_custom_gadget_draw
    (gadget=<optimized out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkcsscustomgadget.c:159
#59 0x00007f0725a2373c in gtk_css_gadget_draw (gadget=0xafa200 [GtkCssCustomGadget], cr=0x9ca600)
    at gtkcssgadget.c:885
#60 0x00007f0725a9c775 in gtk_frame_draw (widget=<optimized out>, cr=<optimized out>) at gtkframe.c:719
#61 0x00007f0725c388d4 in gtk_widget_draw_internal (clip_to_size=1, cr=0x9ca600, widget=0xafb1a0 [GtkFrame])
    at gtkwidget.c:7080
#62 gtk_widget_draw_internal
    (widget=widget@entry=0xafb1a0 [GtkFrame], cr=cr@entry=0x9ca600, clip_to_size=clip_to_size@entry=1)
    at gtkwidget.c:7018
#63 0x00007f0725a1952b in gtk_container_propagate_draw
    (container=container@entry=0xaf8270 [GtkWindow], child=0xafb1a0 [GtkFrame], cr=cr@entry=0x9ca600)
    at gtkcontainer.c:3853
#64 0x00007f0725a195fd in gtk_container_draw (widget=0xaf8270 [GtkWindow], cr=0x9ca600) at gtkcontainer.c:3673
#65 0x00007f0725c46fd5 in gtk_window_draw (widget=widget@entry=0xaf8270 [GtkWindow], cr=0x9ca600)
    at gtkwindow.c:10473
#66 0x00007f0725c82cab in _gtk_marshal_BOOLEAN__BOXED
    (closure=closure@entry=0x874730, return_value=return_value@entry=0x7ffcd8b3b7f0, n_param_values=n_param_values@entry=2, param_values=param_values@entry=0x7ffcd8b3b850, invocation_hint=invocation_hint@entry=0x7ffcd8b3b7d0, marshal_data=marshal_data@entry=0x7f0725c46f20 <gtk_window_draw>) at gtkmarshalers.c:83
#67 0x00007f0725c2bb83 in gtk_widget_draw_marshaller
    (closure=0x874730, return_value=0x7ffcd8b3b7f0, n_param_values=2, param_values=0x7ffcd8b3b850, invocation_hint=0x7ffcd8b3b7d0, marshal_data=0x7f0725c46f20 <gtk_window_draw>) at gtkwidget.c:947
#71 0x00007f072543e9d3 in <emit signal ??? on instance 0xaf8270 [GtkWindow]>
    (instance=instance@entry=0xaf8270, signal_id=<optimized out>, detail=detail@entry=0)
    at ../gobject/gsignal.c:3453
    #68 0x00007f0725421742 in g_closure_invoke
--Type <RET> for more, q to quit, c to continue without paging--
    (closure=0x874730, return_value=0x7ffcd8b3b7f0, n_param_values=2, param_values=0x7ffcd8b3b850, invocation_hint=0x7ffcd8b3b7d0) at ../gobject/gclosure.c:810
    #69 0x00007f0725434d84 in signal_emit_unlocked_R
    (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0xaf8270, emission_return=emission_return@entry=0x7ffcd8b3b980, instance_and_params=instance_and_params@entry=0x7ffcd8b3b850)
    at ../gobject/gsignal.c:3679
    #70 0x00007f072543da21 in g_signal_emit_valist
    (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffcd8b3ba30) at ../gobject/gsignal.c:3407
#72 0x00007f0725c38a32 in gtk_widget_draw_internal
    (clip_to_size=<optimized out>, cr=0x9ca600, widget=0xaf8270 [GtkWindow]) at gtkwidget.c:7073
#73 gtk_widget_draw_internal (widget=0xaf8270 [GtkWindow], cr=0x9ca600, clip_to_size=<optimized out>)
    at gtkwidget.c:7018
#74 0x00007f0725c41d10 in gtk_widget_render
    (widget=widget@entry=0xaf8270 [GtkWindow], window=0xce4400 [GdkX11Window], region=<optimized out>)
    at gtkwidget.c:17606
#75 0x00007f0725aeb2b9 in gtk_main_do_event (event=0x7ffcd8b3bc70) at gtkmain.c:1840
#76 gtk_main_do_event (event=<optimized out>) at gtkmain.c:1687
#77 0x00007f07257d3f79 in _gdk_event_emit (event=event@entry=0x7ffcd8b3bc70) at gdkevents.c:73
#78 0x00007f07257e5291 in _gdk_window_process_updates_recurse_helper
    (window=0xce4400 [GdkX11Window], expose_region=<optimized out>) at gdkwindow.c:3874
#79 0x00007f07257e6465 in gdk_window_process_updates_internal (window=0xce4400 [GdkX11Window])
    at gdkwindow.c:4020
#80 0x00007f07257e6624 in gdk_window_process_updates_with_mode
    (recurse_mode=<optimized out>, window=<optimized out>) at gdkwindow.c:4215
#81 gdk_window_process_updates_with_mode (window=<optimized out>, recurse_mode=<optimized out>)
    at gdkwindow.c:4186
#82 0x00007f0725421996 in _g_closure_invoke_va
    (closure=0xd39fd0, return_value=0x0, instance=0x86c520, args=0x7ffcd8b3bfb0, n_params=0, param_types=0x0)
    at ../gobject/gclosure.c:873
#83 0x00007f072543e228 in g_signal_emit_valist
    (instance=0x86c520, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffcd8b3bfb0)
    at ../gobject/gsignal.c:3306
#84 0x00007f072543e9d3 in g_signal_emit
    (instance=instance@entry=0x86c520, signal_id=<optimized out>, detail=detail@entry=0)
    at ../gobject/gsignal.c:3453
#85 0x00007f07257dd383 in _gdk_frame_clock_emit_paint
    (frame_clock=frame_clock@entry=0x86c520 [GdkFrameClockIdle]) at gdkframeclock.c:643
#86 0x00007f07257ddcc3 in gdk_frame_clock_paint_idle (data=0x86c520) at gdkframeclockidle.c:450
#87 0x00007f07257c7f3d in gdk_threads_dispatch (data=data@entry=0x9cba80) at gdk.c:777
#88 0x00007f072531f021 in g_timeout_dispatch
    (source=source@entry=0x886760, callback=0x7f07257c7f10 <gdk_threads_dispatch>, user_data=0x9cba80)
    at ../glib/gmain.c:4668
--Type <RET> for more, q to quit, c to continue without paging--
#89 0x00007f072531e510 in g_main_dispatch (context=0x863670) at ../glib/gmain.c:3179
#90 g_main_context_dispatch (context=context@entry=0x863670) at ../glib/gmain.c:3844
#91 0x00007f072531e8a0 in g_main_context_iterate
    (context=0x863670, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/gmain.c:3917
#92 0x00007f072531eb93 in g_main_loop_run (loop=0x93aba0) at ../glib/gmain.c:4111
#93 0x00007f0725aea3bd in gtk_main () at gtkmain.c:1325
#94 0x0000000000403aae in main (argc=<optimized out>, argv=<optimized out>) at main.c:432
(gdb) c
Continuing.
Couldn't get registers: No such process.
Couldn't get registers: No such process.
(gdb) [Thread 0x7f0715631700 (LWP 1951316) exited]
[Thread 0x7f0716781700 (LWP 1950158) exited]
[Thread 0x7f0716f82700 (LWP 1950157) exited]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb)
Comment 1 Graeme Gott editbugs 2020-02-02 23:57:23 CET
Interestingly, Whisker Menu doesn't crash for me with Kernel Shark. The .desktop file has a full path for the icon, and it still loads and renders properly for me. However, I have added a check to make sure the cairo surface loads properly. Does that fix the crash?
Comment 2 Öyvind Saether 2020-02-03 05:19:41 CET
Yes. Thank you.

Bug #16421

Reported by:
Öyvind Saether
Reported on: 2020-02-02
Last modified on: 2020-02-03

People

Assignee:
Graeme Gott
CC List:
0 users

Version

Version:
unspecified

Attachments

Additional information