! 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 !
Xfce panel crashes when removing launcher
Status:
RESOLVED: FIXED
Severity:
critical
Product:
Xfce4-panel

Comments

Description Olivier Fourdan editbugs 2006-04-10 19:48:10 CEST
The xfce panel from SVN (from today's revision 20833) dies with a core dump when removing a launcher

Steps to reproduce:

1) Move a launcher from a panel to anothe rone a couple of times
2) Remove the launcher by dragging it back to the "Add items" dialog
3) The panel crashes.

GDB backtrace follows:

(gdb) bt
#0  0x00002ae2be24be77 in free () from /lib/libc.so.6
#1  0x00002ae2be24da22 in calloc () from /lib/libc.so.6
#2  0x00002ae2be07d420 in g_malloc0 () from /usr/lib/libglib-2.0.so.0
#3  0x00002ae2be074245 in g_source_new () from /usr/lib/libglib-2.0.so.0
#4  0x00002ae2be077ad2 in g_timeout_source_new ()
   from /usr/lib/libglib-2.0.so.0
#5  0x00002ae2be077b35 in g_timeout_add_full () from /usr/lib/libglib-2.0.so.0
#6  0x000000000040a4f1 in panel_app_queue_save () at panel-app.c:650
#7  0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#8  0x00002ae2bdd21af2 in g_signal_stop_emission ()
   from /usr/lib/libgobject-2.0.so.0
#9  0x00002ae2bdd22fcc in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#10 0x00002ae2bdd23383 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#11 0x00002ae2bc59b703 in gtk_object_destroy ()
   from /usr/lib/libgtk-x11-2.0.so.0
#12 0x00002ae2bdd15b90 in g_object_run_dispose ()
   from /usr/lib/libgobject-2.0.so.0
#13 0x00000000004128c6 in _panel_drag_data_delete (
    widget=<value optimized out>, drag_context=<value optimized out>,
    panel=<value optimized out>) at panel.c:605
#14 0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#15 0x00002ae2bdd21af2 in g_signal_stop_emission ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/libgobject-2.0.so.0
#16 0x00002ae2bdd22fcc in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#17 0x00002ae2bdd2682d in g_signal_emit_by_name ()
   from /usr/lib/libgobject-2.0.so.0
#18 0x00002ae2bc510296 in _gtk_drag_source_handle_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#19 0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#20 0x00002ae2bdd21af2 in g_signal_stop_emission ()
   from /usr/lib/libgobject-2.0.so.0
#21 0x00002ae2bdd22fcc in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#22 0x00002ae2bdd2682d in g_signal_emit_by_name ()
   from /usr/lib/libgobject-2.0.so.0
#23 0x00002ae2bc5bfcab in _gtk_selection_notify ()
   from /usr/lib/libgtk-x11-2.0.so.0
#24 0x00002ae2bc5bff55 in gtk_selection_convert ()
   from /usr/lib/libgtk-x11-2.0.so.0
#25 0x00002ae2bc50bfd2 in gtk_drag_finish () from /usr/lib/libgtk-x11-2.0.so.0
#26 0x00002ae2bc580bfb in _gtk_marshal_VOID__OBJECT_INT_INT_BOXED_UINT_UINT ()
   from /usr/lib/libgtk-x11-2.0.so.0
#27 0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#28 0x00002ae2bdd21af2 in g_signal_stop_emission ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/libgobject-2.0.so.0
#29 0x00002ae2bdd22fcc in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#30 0x00002ae2bdd2682d in g_signal_emit_by_name ()
   from /usr/lib/libgobject-2.0.so.0
#31 0x00002ae2bc50c91b in gtk_drag_dest_find_target ()
   from /usr/lib/libgtk-x11-2.0.so.0
#32 0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#33 0x00002ae2bdd21af2 in g_signal_stop_emission ()
   from /usr/lib/libgobject-2.0.so.0
#34 0x00002ae2bdd22fcc in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#35 0x00002ae2bdd2682d in g_signal_emit_by_name ()
   from /usr/lib/libgobject-2.0.so.0
#36 0x00002ae2bc5bf7b5 in gtk_selection_clear ()
   from /usr/lib/libgtk-x11-2.0.so.0
#37 0x00002ae2bc5bff73 in gtk_selection_convert ()
   from /usr/lib/libgtk-x11-2.0.so.0
#38 0x000000000040edeb in treeview_drag_drop (widget=0x590e00,
    context=0xb01cf0, x=<value optimized out>, y=<value optimized out>,
    time=2236859787, user_data=<value optimized out>) at panel-dialogs.c:340
#39 0x00002ae2bc57ec0a in _gtk_marshal_BOOLEAN__OBJECT_INT_INT_UINT ()
   from /usr/lib/libgtk-x11-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#40 0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#41 0x00002ae2bdd21af2 in g_signal_stop_emission ()
   from /usr/lib/libgobject-2.0.so.0
#42 0x00002ae2bdd22d0c in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#43 0x00002ae2bdd2682d in g_signal_emit_by_name ()
   from /usr/lib/libgobject-2.0.so.0
#44 0x00002ae2bc510697 in _gtk_drag_source_handle_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#45 0x00002ae2bc50e21f in gtk_drag_set_default_icon ()
   from /usr/lib/libgtk-x11-2.0.so.0
#46 0x00002ae2bc50e262 in gtk_drag_set_default_icon ()
   from /usr/lib/libgtk-x11-2.0.so.0
#47 0x00002ae2bc50e262 in gtk_drag_set_default_icon ()
   from /usr/lib/libgtk-x11-2.0.so.0
#48 0x00002ae2bc50e262 in gtk_drag_set_default_icon ()
   from /usr/lib/libgtk-x11-2.0.so.0
#49 0x00002ae2bc50e262 in gtk_drag_set_default_icon ()
   from /usr/lib/libgtk-x11-2.0.so.0
#50 0x00002ae2bc50e395 in _gtk_drag_dest_handle_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#51 0x00002ae2bc57cf6a in gtk_main_do_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#52 0x00002ae2bc9e32ac in _gdk_events_queue ()
   from /usr/lib/libgdk-x11-2.0.so.0
#53 0x00002ae2be075b9d in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
#54 0x00002ae2be078e65 in g_main_context_check ()
   from /usr/lib/libglib-2.0.so.0
#55 0x00002ae2be07912a in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#56 0x00002ae2bc57c2e2 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#57 0x000000000040a291 in panel_app_run (argc=5644576, argv=0x1)
    at panel-app.c:612
#58 0x00000000004098a5 in main (argc=1, argv=0x7ffffffeb838) at main.c:167
Comment 1 Jasper Huijsmans editbugs 2006-04-11 14:43:42 CEST
Hi, that's a pretty big backtrace and I don't really see what is going on there. At first glance it looks like a glib error:

#0  0x00002ae2be24be77 in free () from /lib/libc.so.6
#1  0x00002ae2be24da22 in calloc () from /lib/libc.so.6
#2  0x00002ae2be07d420 in g_malloc0 () from /usr/lib/libglib-2.0.so.0
#3  0x00002ae2be074245 in g_source_new () from /usr/lib/libglib-2.0.so.0
#4  0x00002ae2be077ad2 in g_timeout_source_new ()
   from /usr/lib/libglib-2.0.so.0
#5  0x00002ae2be077b35 in g_timeout_add_full () from /usr/lib/libglib-2.0.so.0
#6  0x000000000040a4f1 in panel_app_queue_save () at panel-app.c:650
#7  0x00002ae2bdd12910 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0

The crash is in g_malloc, but perhaps there is some memory corruption with the drag and drop stuff... I need to have a closer look at that. Other ideas are welcome ;-)
Comment 2 Olivier Fourdan editbugs 2006-04-11 19:27:43 CEST
I could have a look at the code if you tell me where to start (I'm not too familiar with the new panel code).
Comment 3 Olivier Fourdan editbugs 2006-04-11 20:12:50 CEST
Created attachment 499 
Fix a memory error

Dunno if that fixes the issue definitely, but it's still a fairly serious fix IMHO.
Comment 4 Olivier Fourdan editbugs 2006-04-11 20:44:20 CEST
Ok, I've commited my patch because:
- It's an obvious memory management bug
- It can't break things
- It seems to fix the issue, I can't reproduce the crash anymore.

I hope you don't mind ;)
Comment 5 Jasper Huijsmans editbugs 2006-04-12 10:58:58 CEST
(In reply to comment #4)
> Ok, I've commited my patch because:
> - It's an obvious memory management bug
> - It can't break things
> - It seems to fix the issue, I can't reproduce the crash anymore.
> 
> I hope you don't mind ;)
> 

Hehe, by all means, go ahead and fix my bugs. Thanks!

Bug #1655

Reported by:
Olivier Fourdan
Reported on: 2006-04-10
Last modified on: 2010-11-20

People

Assignee:
Nick Schermer
CC List:
0 users

Version

Attachments

Fix a memory error (334 bytes, patch)
2006-04-11 20:12 CEST , Olivier Fourdan
no flags

Additional information