When accessing the Sound/Mixer dialogue in the Setting Manager, closing this dialogue will cause mcs-manager to crash.
could you please get a backtrace? kill the running instance and use gdb like so: $ gdb xfce-mcs-manager [...] (gdb) r --no-daemon-debug [...] [crashes] (gdb) bt [prints backtrace]
sorry, I tried but looks like I didn't compile it with debug symbols, and now it won't compile for an odd reason.
which version is it btw?
Danny, I'll leave it to you whether we can close this or not.
I'm now compiling XFCE from CVS with the --enable-debug option. I will take a backtrace once I'm done and will post it here. Sorry for the great delay.
Here's the long awaited backtrace: (gdb) bt #0 0x40bc3b16 in ___finalize () from /opt/xfce4-cvs/lib/xfce4/mcs-plugins/sound_settings.so #1 0x4056002a in g_object_unref () from /usr/lib/libgobject-2.0.so.0 #2 0x4056016d in g_object_run_dispose () from /usr/lib/libgobject-2.0.so.0 #3 0x4029af1e in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0 #4 0x4037cf51 in gtk_widget_destroy () from /usr/lib/libgtk-x11-2.0.so.0 #5 0x401b9c4d in gtk_box_forall () from /usr/lib/libgtk-x11-2.0.so.0 #6 0x401f601a in gtk_container_foreach () from /usr/lib/libgtk-x11-2.0.so.0 #7 0x401f861e in gtk_container_destroy () from /usr/lib/libgtk-x11-2.0.so.0 #8 0x40576a51 in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0 #9 0x4055da97 in g_type_class_meta_marshal () from /usr/lib/libgobject-2.0.so.0 #10 0x4055d6cb in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0 #11 0x405744a8 in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0 #12 0x00000000 in ?? () #13 0x00000001 in ?? () #14 0xbfffd930 in ?? () #15 0xbfffd818 in ?? () #16 0x080ee990 in ?? () #17 0xbfffd6b8 in ?? () #18 0x4055d001 in g_closure_unref () from /usr/lib/libgobject-2.0.so.0 Previous frame inner to this frame (corrupt stack?)
now that looks baad. And this happens on opening the sound settings dialog ? (I ask to be sure since the backtrace lists __finalize which is supposed to be called when the object is done) Could you try with --enable-debug=full too ? I think this would give us even line numbers to look for and hence simplify the discovery of the offending code :) Thanks
ow oops you say "closing", indeed
Well, I'll compile it again with --enable-debug=full and will post another backtrace tomorrow.
Well, I tried compiling with --enable-debug=full, but it simply didn't compile. I did get the message when it crahsed, hoping this helps: (gdb) r --no-daemon-debug Starting program: /opt/xfce4-cvs/bin/xfce-mcs-manager --no-daemon-debug ** Message: Daemon mode disabled (for debug purpose only!) [Thread debugging using libthread_db enabled] [New Thread 16384 (LWP 16962)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 16384 (LWP 16962)] 0x40bc2b16 in ___finalize () from /opt/xfce4-cvs/lib/xfce4/mcs-plugins/sound_settings.so
ok, I fixed some stuff so that compiling with --enable-debug=full works... If it still doesnt, tell me the error messages :) The backtrace you sent just says it last called g_object_unref which is the function to free something. It could be just about anything that is freed though. (And "corrupt stack" really worries me...) I really need the line numbers and source file reference baad... Also, which gtk/glib version do you use ?
unfortunately I cannot reproduce the problem locally... I just broke my sound system on purpose to test it, and it still works... so please help us by the ways of the full backtrace :)
Compiling it now with --enable-debug=full My gtk/glib: gtk2 2.4.4-1 glib2 2.4.4-1 I hope it'll work.
Hmm it failed to build again: gcc -DHAVE_CONFIG_H -I. -I. -I.. -DG_LOG_DOMAIN=\"libxfcegui4\" -I.. -DPREFIX=\"/opt/xfce4-cvs\" -DDATADIR=\"/opt/xfce4-cvs/share\" -DPACKAGE_LOCALE_DIR=\"/opt/xfce4-cvs/share/locale\" -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/X11R6/include -I/usr/X11R6/include -I/opt/xfce4-cvs/include/xfce4 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/startup-notification-1.0 -I/home/sweiss/xfce4-cvs/pkg/opt/xfce4-cvs/include/xfce4 -L/home/sweiss/xfce4-cvs/pkg/opt/xfce4-cvs/lib -march=i686 -O2 -pipe -g3 -Wall -Werror -DXFCE_DISABLE_DEPRECATED -MT libxfcegui4_la-netk-util.lo -MD -MP -MF .deps/libxfcegui4_la-netk-util.Tpo -c netk-util.c -fPIC -DPIC -o .libs/libxfcegui4_la-netk-util.o netk-util.c:35: warning: 'set_type_realize_handler' defined but not used make[2]: *** [libxfcegui4_la-netk-util.lo] Error 1 make[2]: Leaving directory `/home/sweiss/xfce4-cvs/src/xfce4/libxfcegui4/libxfcegui4' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/sweiss/xfce4-cvs/src/xfce4/libxfcegui4' make: *** [all] Error 2 ==> ERROR: Build Failed. Aborting...
oh! Just recompiling xfce-mcs-manager and xfce4-mixer with --enable-debug=full should suffice :)
xfce4-mixer fails to compile with --enable-debug=full gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -DPACKAGE_LOCALE_DIR=\"/opt/xfce4-cvs/share/locale\" -I/usr/X11R6/include -I/opt/xfce4-cvs/include/xfce4 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/opt/xfce4-cvs/include/xfce4 -I/usr/X11R6/include -I/usr/include/libxml2 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/atk-1.0 -I/home/sweiss/xfce4-cvs/pkg/opt/xfce4-cvs/include/xfce4 -L/home/sweiss/xfce4-cvs/pkg/opt/xfce4-cvs/lib -march=i686 -O2 -pipe -g3 -Wall -Werror -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DXFCE_DISABLE_DEPRECATED -MT libmixer_la-xfce-mixer-preferences.lo -MD -MP -MF .deps/libmixer_la-xfce-mixer-preferences.Tpo -c xfce-mixer-preferences.c -fPIC -DPIC -o .libs/libmixer_la-xfce-mixer-preferences.o mixer-preferences.gob: In function `___finalize': mixer-preferences.gob:46: warning: function called through a non-compatible type mixer-preferences.gob:46: note: if this code is reached, the program will abort make[2]: *** [libmixer_la-xfce-mixer-preferences.lo] Error 1 make[2]: Leaving directory `/home/sweiss/xfce4-cvs/src/xfce4/xfce4-mixer/panel-plugin' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/sweiss/xfce4-cvs/src/xfce4/xfce4-mixer' make: *** [all] Error 2
what the heck... its just my stringlist_free function... now I've something to work with and to fix the bug (i hope)... although even that warning and note do *not* happen here. So: whats your gcc version ?
Danny, just a remark, xfce does not require gcc, not even any gcc version (ie, a C89 compatible C compiler should be enough, so no C99 feature should be used)
fixes for that warning are in cvs now and it seems to be fixed (according to oliver)... but please check yourself and report back :)
I'm sorry but it still fails to compile, I'm using gcc 3.4.1.
Ok guys, why not forget about --enable-debug=full for now and set the CFLAGS appropriately. CFLAGS="-g3" ./configure && make && make install That should give you useful debugging symbols.
I just compiled it with the -g3, and now the problem is gone. I guess it has nothing to do with the trigger, but the issue is gone nontheless. Good work, keep it up, and thank you for everything :)