У меня на компьютере периодически зависает алса... Это случается как правило после зависания фаерфокса в котором загрузился флеш объект или после зависания вайна... само собой там и там проигрывался звук... После зависания звуковуха перестает откликаться на сигналы (видимо busy или че там), мпд виснет, мплеер виснет на стадии загрузки алсы, вайн и вообще все что использует алсу - виснет.
С чем это может быть связано? Если это решить нельзя, то как можно перезагрузить алсу?
p.s. звуковуха SB Live 5.1 с хардварным микшером.
Зависание Alsa
Модератор: Модераторы разделов
-
- Сообщения: 179
- ОС: Arch Linux Current
Зависание Alsa
Registered Linux user number #434194
-
- Сообщения: 103
- ОС: GNU/Imhonix 2.0
Re: Зависание Alsa
как можно перезагрузить алсу?
от дистриба зивисит. Скорее всего что-нибудь вроде
Код: Выделить всё
sudo /etc/init.d/alsa restart
или
Код: Выделить всё
sudo /etc/rc.d/init.d/alsa restart
--- В выражении "Купила баба порося" следует рассматривать иносказательный смысл, абстрагируясь от конкретной половой принадлежности и социального статуса правообладателя ценного имущества, --- почему-то подумал я, когда в первый раз установил GNU/linux на домашний ПК.
-
- Сообщения: 179
- ОС: Arch Linux Current
Re: Зависание Alsa
&rew, Ну мне тоже это первое пришло в голову... Только у меня /etc/rc.d/, но сути дела это не меняет... Так вот этот файлик не перезагружает алсу. Он только сохраняет и восстанавливает уровни микшера. В других дистрибутивах скорее всего так же.
без шансов
без шансов

Код: Выделить всё
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
start)
stat_busy "Restoring ALSA Levels"
/usr/sbin/alsactl restore
if [ $? -gt 0 ]; then
stat_fail
else
stat_done
add_daemon alsa
fi
;;
stop)
stat_busy "Saving ALSA Levels"
/usr/sbin/alsactl store
if [ $? -gt 0 ]; then
stat_fail
else
stat_done
rm_daemon alsa
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
Registered Linux user number #434194
-
- Сообщения: 5058
- Статус: ROSA Lab
- ОС: Ubuntu LTS, Mandriva 2011
Re: Зависание Alsa
Код:
#!/sbin/runscript
# $Header: /var/cvsroot/gentoo-x86/media-sound/alsa-utils/files/alsasound-1.0.10_rc2,v 1.2 2005/12/15 22:42:46 flameeyes Exp $
#
# Gentoo users: add this script to 'boot' run level.
# ==================================================
#
# alsasound This shell script takes care of starting and stopping
# the ALSA sound driver.
#
# This script requires /usr/sbin/alsactl and /usr/bin/aconnect programs
# from the alsa-utils package.
#
# Copyright © by Jaroslav Kysela <perex@suse.cz>
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# ChangeLog:
#
# 2003.07.29 - John Mylchreest <johnm@gentoo.org>
# Edited to support Linux kernel 2.5 and above as well as 2.4
#
# 2004.06.02 - Jeremy Huddleston <eradicator@gentoo.org>
# Rewritten for better support for built-in drivers
#
# 2004.10.29 - Jeremy Huddleston <eradicator@gentoo.org>
# Cleaned up to work better for mixed builtin/module systems
#
# 2004.11.29 - Jeremy Huddleston <eradicator@gentoo.org>
# Added save option thanks to Ben Anderson <roothorick@new.rr.com>
#
# 2005.04.21 - Jeremy Huddleston <eradicator@gentoo.org>
# Added restore option and oss option.
# Cleaned up code to use bash builtins instead of test.
alsactl=/usr/sbin/alsactl
asoundcfg=/etc/asound.state
aconnect=/usr/bin/aconnect
alsascrdir=/etc/alsa.d
opts="${opts} save restore"
depend() {
need bootmisc localmount
after modules isapnp coldplug hotplug
}
load_modules() {
# List of drivers for each card.
local DRIVERS="$(modprobe -c | grep -E "^[[:space:]]*alias[[:space:]]+snd-card-[[:digit:]]" | awk '{print $2}')"
# Fall back on the automated aliases if we don't have ALSA configured properly...
if [[ -z "${DRIVERS}" && ! ( -d /proc/asound && -z "$(grep ' no soundcards ' /proc/asound/cards)" ) ]] ; then
ewarn "Could not detect custom ALSA settings. Loading all detected alsa drivers."
DRIVERS="$(modprobe -c | grep pci: | awk '{ print $3 }' | grep snd.* | sort | uniq)"
[[ -z "${DRIVERS}" ]] && eerror "Unable to find any ALSA drivers. Have you compiled alsa-drivers correctly?"
fi
if [[ ${ENABLE_OSS_EMUL} == "yes" ]] && modprobe -c | grep -q "snd.*oss$" ; then
# Test for use of OSS
local OSS="$(modprobe -l | grep "snd.*oss" | sed -e "s:\/.*\/::" -e "s:\..*::")"
# Add oss modules to list
local i
for i in ${OSS}
do
DRIVERS="${DRIVERS} ${i}"
done
fi
# We want to ensure snd-seq is loaded as it is needed for things like
# timidity even if we don't use a real sequencer.
DRIVERS="${DRIVERS} $(modprobe -l | grep "snd.seq\." | sed -e "s:\/.*\/::" -e "s:\..*::")"
# We want to ensure snd-ioctl32 is loaded as it is needed for 32bit
# compatibility
DRIVERS="${DRIVERS} $(modprobe -l | grep "snd.ioctl32\." | sed -e "s:\/.*\/::" -e "s:\..*::")"
local DRIVER
for DRIVER in ${DRIVERS}
do
if [[ "${DRIVER}" != "off" &&
-z $(cut -d' ' -f1 /proc/modules | egrep "^${DRIVER}\$") &&
-z $(cut -d' ' -f1 /proc/modules | egrep "^${DRIVER//-/_}\$") ]] ; then
ebegin " Loading: ${DRIVER}"
/sbin/modprobe ${DRIVER}
eend $?
fi
done
sleep 1
if [[ -f /proc/asound/seq/drivers ]] ; then
local SEQUENCERS="$(awk -F, '$2~/^empty$/ {print $1}' /proc/asound/seq/drivers)"
local SEQUENCER
for SEQUENCER in ${SEQUENCERS}
do
if [[ -z $(cut -d' ' -f1 /proc/modules | egrep "^${SEQUENCER}\$") &&
-z $(cut -d' ' -f1 /proc/modules | egrep "^${SEQUENCER//-/_}\$") ]] ; then
ebegin " Loading: ${SEQUENCER}"
/sbin/modprobe ${SEQUENCER}
eend $?
fi
done
fi
for DRIVER in ${DRIVERS}
do
local TMP=${DRIVER##snd-}
TMP=${TMP##snd_}
if [[ -x "${alsascrdir}/${TMP}" ]] ; then
ebegin " Running: ${alsascrdir}/${TMP}"
${alsascrdir}/${TMP}
eend $?
fi
done
if [[ ! -d /proc/asound || -n "$(grep ' no soundcards ' /proc/asound/cards)" ]] ; then
eerror "ERROR: Failed to load necessary drivers"
fi
}
unload_modules() {
local LOADED_MODULES="$(/sbin/lsmod | grep -E "^snd" | awk '{print $1}')"
local MODULE
for MODULE in ${LOADED_MODULES}
do
/sbin/rmmod ${MODULE} >& /dev/null
done
/sbin/rmmod soundcore >& /dev/null
/sbin/rmmod gameport >& /dev/null
# Return success if the modules are unloaded
[[ -z "$(/sbin/lsmod | grep -E "^snd" | awk '{print $1}')" ]]
}
terminate() {
#
# Kill processes holding open sound devices
#
# DEVS=`find /dev/ -follow -type c -maxdepth 1 -print 2>/dev/null | xargs ls -dils | grep "1*1[46]," | cut -d: -f2 | cut -d" " -f2; echo /proc/asound/dev/*`
local ossdevs="/dev/admmidi? /dev/adsp? /dev/amidi? /dev/audio* /dev/dmfm* \
/dev/dmmidi? /dev/dsp* /dev/dspW* /dev/midi0? /dev/mixer? /dev/music \
/dev/patmgr? /dev/sequencer* /dev/sndstat"
local alsadevs="/proc/asound/dev/* /dev/sound/* /dev/snd/*"
fuser -k ${ossdevs} ${alsadevs} >& /dev/null
#
# remove all sequencer connections if any
#
[[ -f /proc/asound/seq/clients && -x ${aconnect} ]] && ${aconnect} --removeall
}
restore_mixer() {
if [[ ${RESTORE_ON_START} == "no" ]] ; then
return 0
fi
restore
}
restore() {
ebegin "Restoring Mixer Levels"
local val=0
if [[ ! -r ${asoundcfg} ]] ; then
ewarn "No mixer config in ${asoundcfg}, you have to unmute your card!"
elif [[ -x ${alsactl} ]] ; then
local CARDS="$(cat /proc/asound/cards | awk '/: / { print $1 }')"
local CARDNUM
for CARDNUM in ${CARDS}
do
[[ -e /dev/snd/controlC0 ]] || sleep 2
[[ -e /dev/snd/controlC0 ]] || sleep 2
[[ -e /dev/snd/controlC0 ]] || sleep 2
[[ -e /dev/snd/controlC0 ]] || sleep 2
${alsactl} -f ${asoundcfg} restore ${CARDNUM} || ewarn "Errors while restoring defaults, ignoring"
done
else
eerror -e "ERROR: Cannot find alsactl, did you forget to install media-sound/alsa-utils?"
val=1
fi
eend ${val}
return ${val}
}
save() {
ebegin "Storing ALSA Mixer Levels"
local val=0
if [[ -x ${alsactl} ]] ; then
${alsactl} -f ${asoundcfg} store
val=$?
else
eerror -e "ERROR: Cannot find alsactl."
val=1
fi
eend ${val}
return ${val}
}
start() {
if [[ -f /proc/modules ]] ; then
ebegin "Loading ALSA modules"
if load_modules ; then
eend 0
else
eend 1
return 1
fi
fi
if [[ ${RESTORE_ON_START} == "yes" ]]; then
restore_mixer
fi
}
stop() {
if [[ ! -d /proc/asound ]] ; then
eerror "ALSA is not loaded"
return 0
fi
if [[ ${SAVE_ON_STOP} == "yes" ]]; then
save
fi
ebegin "Unloading ALSA"
terminate
eend 0
if [[ -f /proc/modules ]]; then
ebegin "Unloading ALSA modules"
if unload_modules; then
eend 0
else
eend 1
fi
fi
}
/etc/init.d/alsasound