[alsa-devel] 'multi' plugin signals POLLOUT but snd_pcm_avail_update() returns 0
tiwai at suse.de
Mon Oct 27 17:57:41 CET 2008
At Mon, 27 Oct 2008 15:18:36 +0100,
Lennart Poettering wrote:
> On Mon, 27.10.08 09:24, Takashi Iwai (tiwai at suse.de) wrote:
> > At Sat, 25 Oct 2008 17:14:29 +0200,
> > Lennart Poettering wrote:
> > >
> > > Heya!
> > >
> > > There's a apparently a bug in the 'multi' plugin. When it is used it
> > > will pretty often signal POLLOUT when used with
> > > snd_pcm_poll_descriptors_revents() and the subsequent call to
> > > snd_pcm_update_avail() will still return 0. Doesn't look right to me.
> > Doesn't look right, indeed.
> > On which system setup does it happen?
> That's surround40:0 on SoundBlaster Live. Here's the debug output of
> PA showing this:
> (Which belongs to https://bugzilla.redhat.com/show_bug.cgi?id=462200).
> Ever line saying "ALSA woke us up to write new data to the device, but
> there was actually nothing to write! Most likely this is an ALSA
> driver bug. Please report this issue to the PulseAudio developers." is
> where we get POLLOUT but update_avail() is 0.
> Looking at it it might actually be the hooks module that is broken,
> not necessarily "multi".
As far as I see, there is nothing special in the update_avail and
poll_* stuff of multi plugin. It just calls avail_update of each
slave, and takes the minimum value.
A few considerations:
- 32bit process on 64bit kernel may have something wrong sync;
but PA should be 64bit, too, right?
- forward/rewind might be buggy;
relevant with command sequences?
More information about the Alsa-devel