Downstream bug: https://bugzilla.redhat.com/show_bug.cgi?id=1250738
lxmusic 0.4.6 segfaults with
* launch lxmusic, GUI appears and also icon appears on lxpanel taskbar
* play the (xmms's) default music with "right arrow" button
* while lxmusic is playing the music, go to lxpanel taskbar and quit lxmusic from taskbar
Valgrind shows the below
** (lxmusic:2267): WARNING **: Server Quit
==2267== Invalid read of size 8
==2267== at 0x672FE74: g_type_check_instance_cast (gtype.c:4055)
==2267== by 0x1151EB: on_playback_status_changed (lxmusic.c:1803)
==2267== by 0x738F8C0: xmmsc_result_run (result.c:432)
==2267== by 0x7389BEA: xmmsc_ipc_exec_msg (ipc.c:399)
==2267== by 0x7389BEA: xmmsc_ipc_io_in_callback (ipc.c:80)
==2267== by 0x708CF29: g_main_dispatch (gmain.c:3122)
==2267== by 0x708CF29: g_main_context_dispatch (gmain.c:3737)
==2267== by 0x708D2BF: g_main_context_iterate.isra.29 (gmain.c:3808)
==2267== by 0x708D5E1: g_main_loop_run (gmain.c:4002)
==2267== by 0x4D81F36: gtk_main (gtkmain.c:1268)
==2267== by 0x1118F4: main (lxmusic.c:2509)
==2267== Address 0xee0def0 is 32 bytes inside a block of size 224 free'd
==2267== at 0x4A07D6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2267== by 0x7092C3E: g_free (gmem.c:192)
==2267== by 0x70AA95C: g_slice_free1 (gslice.c:1112)
==2267== by 0x672EBE6: g_type_free_instance (gtype.c:1941)
==2267== by 0x4CC1D21: gtk_box_forall (gtkbox.c:1251)
==2267== by 0x4CFC6A6: gtk_container_destroy (gtkcontainer.c:1073)
==2267== by 0x670B00E: g_closure_invoke (gclosure.c:801)
==2267== by 0x671DC25: signal_emit_unlocked_R (gsignal.c:3697)
==2267== by 0x672619F: g_signal_emit_valist (gsignal.c:3337)
==2267== by 0x672654E: g_signal_emit (gsignal.c:3393)
==2267== by 0x4DAF87E: gtk_object_dispose (gtkobject.c:421)
==2267== by 0x6711AF8: g_object_run_dispose (gobject.c:1076)
==2267==
==2267== Invalid read of size 8
==2267== at 0x672FE80: g_type_check_instance_cast (gtype.c:4060)
==2267== by 0x1151EB: on_playback_status_changed (lxmusic.c:1803)
==2267== by 0x738F8C0: xmmsc_result_run (result.c:432)
==2267== by 0x7389BEA: xmmsc_ipc_exec_msg (ipc.c:399)
==2267== by 0x7389BEA: xmmsc_ipc_io_in_callback (ipc.c:80)
==2267== by 0x708CF29: g_main_dispatch (gmain.c:3122)
==2267== by 0x708CF29: g_main_context_dispatch (gmain.c:3737)
==2267== by 0x708D2BF: g_main_context_iterate.isra.29 (gmain.c:3808)
==2267== by 0x708D5E1: g_main_loop_run (gmain.c:4002)
==2267== by 0x4D81F36: gtk_main (gtkmain.c:1268)
==2267== by 0x1118F4: main (lxmusic.c:2509)
==2267== Address 0xaaaaaaaaaaaaaaaa is not stack'd, malloc'd or (recently) free'd
==2267==
==2267==
==2267== Process terminating with default action of signal 11 (SIGSEGV)
==2267== General Protection Fault
==2267== at 0x672FE80: g_type_check_instance_cast (gtype.c:4060)
==2267== by 0x1151EB: on_playback_status_changed (lxmusic.c:1803)
==2267== by 0x738F8C0: xmmsc_result_run (result.c:432)
==2267== by 0x7389BEA: xmmsc_ipc_exec_msg (ipc.c:399)
==2267== by 0x7389BEA: xmmsc_ipc_io_in_callback (ipc.c:80)
==2267== by 0x708CF29: g_main_dispatch (gmain.c:3122)
==2267== by 0x708CF29: g_main_context_dispatch (gmain.c:3737)
==2267== by 0x708D2BF: g_main_context_iterate.isra.29 (gmain.c:3808)
==2267== by 0x708D5E1: g_main_loop_run (gmain.c:4002)
==2267== by 0x4D81F36: gtk_main (gtkmain.c:1268)
==2267== by 0x1118F4: main (lxmusic.c:2509)
So it seems that with the above procedure,
I wrote a workaround for this issue, please review it.