Bug#839692: pulseaudio: alsa application uses up 100% cpu when pulse dies

treaki treaki at treaki.tk
Mon Oct 3 23:48:38 UTC 2016


Package: pulseaudio
Version: 7.1-2~bpo8+1
Severity: important

hi, 

just try following to reproduce the problem, happended here manny times:

start an alsamixer so that it access pulseaudio, keep it running, maybe forgett that its still running, and keep your system running. Then eventually pulseaudio will have a problem crash and be restarted imidiatly, normaly you wount recognise, only if you here that or if there is a programm like mumble which dosnt manage to aoutomaticly reconnect to the new instance of pulse.

Than come back to your system, look at the system monitor and wounder why cpu load is that high, open htop, or something similiar, and see that that alsa using application, alsamixer, is using up every cpu it can with one thread (100%). You kill it then of cause but you think that it could act much better.

This force overloading of a shared lib of an alsa application to force it to use pulse even if it is not designed to seames in generall very proplematic. Manny applications (mostly that one which are not only playing sound but doing a bit more with the expected interface to alsa (which dosnt exist as espected)) dont act right with it at all...

So first of all: please fix the problem with that client side alsa2pulse implementation which happens when pulse dies, and secoundly: why dont create a kernel module which implements the full alsa interface to a real virtual soundcard which is working with all old alsa applications without injecting them just by being a "real" card in /dev/snd/ and not only a ghost that is not realy existing and only working through hidden influences on that process trying to use it by injecting them...

thanks in advance

treaki


-- Package-specific info:
File '/etc/default/pulseaudio' does not exist


-- System Information:
Debian Release: 8.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.2.0-0.bpo.1-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages pulseaudio depends on:
ii  adduser                       3.113+nmu3
ii  libasound2                    1.0.28-1
ii  libasound2-plugins            1.0.28-1+b1
ii  libc6                         2.19-18+deb8u4
ii  libcap2                       1:2.24-8
ii  libdbus-1-3                   1.8.20-0+deb8u1
ii  libfftw3-single3              3.3.4-2
ii  libgcc1                       1:4.9.2-10
ii  libice6                       2:1.0.9-1+b1
ii  libltdl7                      2.4.2-1.11
ii  liborc-0.4-0                  1:0.4.22-1
ii  libpulse0                     7.1-2~bpo8+1
ii  libsm6                        2:1.2.2-1+b1
ii  libsndfile1                   1.0.25-9.1+deb8u1
ii  libsoxr0                      0.1.1-1
ii  libspeexdsp1                  1.2~rc1.2-1
ii  libstdc++6                    4.9.2-10
ii  libsystemd0                   215-17+deb8u4
ii  libtdb1                       1.3.6-0+deb8u1
ii  libudev1                      215-17+deb8u4
ii  libwebrtc-audio-processing-0  0.1-3
ii  libx11-6                      2:1.6.2-3
ii  libx11-xcb1                   2:1.6.2-3
ii  libxcb1                       1.10-3+b1
ii  libxtst6                      2:1.2.2-1+b1
ii  lsb-base                      4.1+Debian13+nmu1
ii  pulseaudio-utils              7.1-2~bpo8+1
ii  udev                          215-17+deb8u4

Versions of packages pulseaudio recommends:
ii  pulseaudio-module-x11  7.1-2~bpo8+1
ii  rtkit                  0.11-2

Versions of packages pulseaudio suggests:
pn  paman        <none>
pn  paprefs      <none>
ii  pavucontrol  2.0-3
ii  pavumeter    0.9.3-4

-- Configuration Files:
/etc/pulse/daemon.conf changed [not included]

-- no debconf information
-------------- next part --------------
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio 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 Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for PulseAudio clients. See pulse-client.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; default-sink =
; default-source =
; default-server =
; default-dbus-server =

; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

; auto-connect-localhost = no
; auto-connect-display = no
-------------- next part --------------
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio 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 Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
#lock-memory = yes
; cpu-limit = no
cpu-limit = yes

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
log-level = info
log-time= yes
#ein wenig mehr loggen um fehler in unsauberer wiedergabe zuzuordnen
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1
; enable-remixing = yes
; enable-lfe-remixing = yes
; lfe-crossover-freq = 120

; flat-volumes = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

; default-fragments = 4
; default-fragment-size-msec = 25

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0
-------------- next part --------------
#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio 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 Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)

..nofail

### Load something into the sample cache
#load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/bell.oga
#load-sample-lazy pulse-hotplug /usr/share/sounds/freedesktop/stereo/device-added.oga
#load-sample-lazy pulse-coldplug /usr/share/sounds/freedesktop/stereo/device-added.oga
#load-sample-lazy pulse-access /usr/share/sounds/freedesktop/stereo/message.oga

..fail

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically augment property information from .desktop files
### stored in /usr/share/application
load-module module-augment-properties

### Should be after module-*-restore but before module-*-detect
load-module module-switch-on-port-available

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
..ifexists module-udev-detect.so
load-module module-udev-detect
..else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
..endif

### Automatically connect sink and source if JACK server is present
..ifexists module-jackdbus-detect.so
..nofail
load-module module-jackdbus-detect channels=2
..fail
..endif

### Automatically load driver modules for Bluetooth hardware
..ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
..endif

..ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
..endif

### Load several protocols
..ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
..endif
load-module module-native-protocol-unix

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv

### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
#load-module module-rtp-send source=rtp.monitor

### Load additional modules from GConf settings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
..ifexists module-gconf.so
..nofail
load-module module-gconf
..fail
..endif

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Honour intended role device property
load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
..ifexists module-console-kit.so
load-module module-console-kit
..endif
..ifexists module-systemd-login.so
load-module module-systemd-login
..endif

### Enable positioned event sounds
load-module module-position-event-sounds

### Cork music/video streams when a phone stream is active
load-module module-role-cork

### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply

# X11 modules should not be started from default.pa so that one daemon
# can be shared by multiple sessions.

### Load X11 bell module
#load-module module-x11-bell sample=x11-bell

### Register ourselves in the X11 session manager
#load-module module-x11-xsmp

### Publish connection data in the X11 root window
#.ifexists module-x11-publish.so
#.nofail
#load-module module-x11-publish
#.fail
#.endif

### Make some devices default
#set-default-sink output
#set-default-source input
-------------- next part --------------
#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio 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 Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started in system
# mode.

### Automatically load driver modules depending on the hardware available
..ifexists module-udev-detect.so
load-module module-udev-detect
..else
### Use the static hardware detection module (for systems that lack udev/hal support)
load-module module-detect
..endif

### Load several protocols
..ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
..endif
load-module module-native-protocol-unix

### Automatically restore the volume of streams and devices
load-module module-stream-restore
load-module module-device-restore

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### Enable positioned event sounds
load-module module-position-event-sounds
-------------- next part --------------
default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
sysdefault:CARD=NVidia
    HDA NVidia, VT1708S Analog
    Default Audio Device
front:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    Front speakers
surround21:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Digital
    HDMI Audio Output
dmix:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    Direct sample mixing device
dmix:CARD=NVidia,DEV=2
    HDA NVidia, VT1708S Alt Analog
    Direct sample mixing device
dmix:CARD=NVidia,DEV=3
    HDA NVidia, VT1708S Digital
    Direct sample mixing device
dsnoop:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=2
    HDA NVidia, VT1708S Alt Analog
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=3
    HDA NVidia, VT1708S Digital
    Direct sample snooping device
hw:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=2
    HDA NVidia, VT1708S Alt Analog
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=3
    HDA NVidia, VT1708S Digital
    Direct hardware device without any conversions
plughw:CARD=NVidia,DEV=0
    HDA NVidia, VT1708S Analog
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=2
    HDA NVidia, VT1708S Alt Analog
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=3
    HDA NVidia, VT1708S Digital
    Hardware device with all software conversions
-------------- next part --------------
private information removed
-------------- next part --------------
Server String: unix:/run/user/1000/pulse/native
Library Protocol Version: 30
Server Protocol Version: 30
Is Local: yes
Client Index: 41
Tile Size: 65472
User Name: treaki
Host Name: hostname
Server Name: pulseaudio
Server Version: 7.1
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_05.0.analog-stereo
Default Source: alsa_input.pci-0000_00_05.0.analog-stereo
Cookie: b62f:6a98


More information about the pkg-pulseaudio-devel mailing list