Re: Confusion about whether snd_pcm_poll_descriptors_revents()'s revents field is a single integer or an array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Mon, 2 Feb 2009 03:50:22 +0100,
Lennart Poettering wrote:
> 
> Heya!
> 
> If we look into the pcm example how snd_pcm_poll_descriptors_revents()
> is used then we can see that the revents parameter apparently is
> supposed to be a single integer. (which makes a lot of sense to me)
> 
> http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html#a33
> 
> However, snd_pcm_wait_nocheck() calls the same function and assumes it
> is a complete array!
> 
> http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/pcm/pcm.c;h=74d1d1a4bd6083cd461b6d793c0ae41cca912f16;hb=HEAD#l2368
> 
> So what's it now? It makes more sense to me if it would be a single
> fd. 

No, it's a bug in test/pcm.c.  As documented, the API converts (fixes)
each poll_fd in the given array.

> The problem becomnes visible if someone writes a plugin that wants
> wakeups from more than one fd because either snd_pcm_wait() using
> applications start to act weirdly because the revents are not fully
> initialized or snd_pcm_poll_descriptors_revents() using applications
> get invalid memory accesses.
> 
> This has become visible in the Bluetooth plugin.
> 
> I guess nobody has written a plugin that has more than one fd to sleep
> on yet, right?

Right, it hasn't been a big problem just because it's a pretty rare
case.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux