Clicking on the options menu in xfce4-mixer causes xfce4-mixer to crash. Also the gtk2 theme that I use gets set to the default when it crashes. I get the same behavior from clicking on the sound button in the xfce settings manager. The xfce4-mixer does work though, just not the options. Reproducible: Always Steps to Reproduce: 1. Open xfce4-mixer 2. Click the File Menu and select "Options" 3. Or, click on the Sound button in the xfce settings manager Actual Results: When I click on the Options menu item, the mixer crashes and my gtk2 theme gets reset to the default theme. If I click on the Sound button in the xfce settings manager, just my gtk2 theme gets reset. Expected Results: I don't know what is supposed to happen, but I'm sure its not supposed to crash. I have a usb sound device and a regular sound card. I am using alsa.
can you install with debugging information and get a backtrace ? ps aux |grep xfce-mcs-manager note the process id. gdb attach theprocessidhere *wait until it crashes* bt thanks
I can reproduce that now. alsa: Unable to find simple control 'Master',0 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1217395008 (LWP 31117)] snd_async_del_handler (handler=0x82b3430) at list.h:85 85 list.h: Datei oder Verzeichnis nicht gefunden. in list.h (gdb) bt #0 snd_async_del_handler (handler=0x82b3430) at list.h:85 #1 0xb71da129 in snd_ctl_close (ctl=0x82b3430) at control.c:94 #2 0xb71d4e67 in snd_hctl_close (hctl=0x81248e8) at hcontrol.c:117 #3 0xb71def21 in snd_mixer_close (mixer=0x810f538) at mixer.c:502 #4 0xb726f3b9 in find_master () at vc_alsa.c:89 #5 0xb726f676 in vc_reinit_device () at vc_alsa.c:153 #6 0xb7270578 in vc_set_device (which=0x82ae0d0 "#1: MPU-401 UART") at vc.c:104 #7 0xb72759c2 in xfce_mixer_settingsbox_device_changed_cb (self=0x8299b58) at mixer-settingsbox.gob:214 #8 0xb7275f81 in xfce_mixer_settingsbox_device_changed_t_cb (self=0x8299b58, om=0x827a2b0) at mixer-settingsbox.gob:185 #9 0xb79d9ab3 in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0 #10 0xb79ce3a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0 #11 0xb79dcb13 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0 #12 0xb79de150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #13 0xb79de4c3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #14 0xb7dc4686 in gtk_option_menu_get_history () from /usr/lib/libgtk-x11-2.0.so.0 #15 0xb7275d0d in xfce_mixer_settingsbox_devicelst_updated (self=0x8299710) at mixer-settingsbox.gob:292 #16 0xb7275df0 in xfce_mixer_settingsbox_load (self=0x8299b58) at mixer-settingsbox.gob:77 #17 0xb727493e in run_dialog (plugin=0x80f1800) at sound.c:120 #18 0x08049f3d in delayed_run_plugin_dialog (plugin=0x0) ---Type <return> to continue, or q <return> to quit---q at xfce-mcs-dialog.c:63Quit (gdb) frame 1 #1 0xb71da129 in snd_ctl_close (ctl=0x82b3430) at control.c:94 94 snd_async_del_handler(h); (gdb) print h No symbol "h" in current context. ?? will investigate...
with alsa-lib-1.0.9 (ubuntu breezy), that is. list.h: /* * Delete a list entry by making the prev/next entries * point to each other. * * This is only for internal list manipulation where we know * the prev/next entries already! */ static __inline__ void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; <--- line 85 prev->next = next; } control.c: int snd_ctl_close(snd_ctl_t *ctl) { int err; while (!list_empty(&ctl->async_handlers)) { snd_async_handler_t *h = list_entry(&ctl->async_handlers.next, snd_async_handler_t, hlist); snd_async_del_handler(h); <--- line 94 } err = ctl->ops->close(ctl); if (ctl->name) free(ctl->name); if (ctl->dl_handle) snd_dlclose(ctl->dl_handle); free(ctl); return err; } hcontrol.c: int snd_hctl_close(snd_hctl_t *hctl) { int err; assert(hctl); err = snd_ctl_close(hctl->ctl); <--- line 117 snd_hctl_free(hctl); free(hctl); return err; } mixer.c: /** * \brief Close a mixer and free all related resources * \param mixer Mixer handle * \return 0 on success otherwise a negative error code */ int snd_mixer_close(snd_mixer_t *mixer) { int res = 0; assert(mixer); while (!list_empty(&mixer->classes)) { snd_mixer_class_t *c; c = list_entry(mixer->classes.next, snd_mixer_class_t, list); snd_mixer_class_unregister(c); } assert(list_empty(&mixer->elems)); assert(mixer->count == 0); if (mixer->pelems) { free(mixer->pelems); mixer->pelems = NULL; } while (!list_empty(&mixer->slaves)) { int err; snd_mixer_slave_t *s; s = list_entry(mixer->slaves.next, snd_mixer_slave_t, list); err = snd_hctl_close(s->hctl); <-- line 502 if (err < 0) res = err; list_del(&s->list); free(s); } free(mixer); return res; } vc_alsa.c: static void find_master(void) { int err; snd_mixer_selem_id_t *sid, *sid2; char buf[12] = "Master"; char buf2[12] = "PCM"; elem = NULL; snd_mixer_selem_id_alloca(&sid); snd_mixer_selem_id_set_index(sid, 0); snd_mixer_selem_id_set_name(sid, buf); snd_mixer_selem_id_alloca(&sid2); snd_mixer_selem_id_set_index(sid2, 0); snd_mixer_selem_id_set_name(sid2, buf2); if (handle) { snd_mixer_close(handle); <--- line 89 handle = NULL; } ... static int vc_reinit_device(void) { find_master(); <-- line 153 if (!elem) return -1; return 0; } hmm.... why...
Same problem with XFCE 4.2.2 and ALSA 1.0.8 : - Open a X terminal - Launch xfce4-mixer - Go to File > Options : xfce-mcs-manager quits -- LiNuCe
Can't do anything about alsa bugs ... let's see if it happens again?