[alsa-devel] EBADFD caused by commit dec428c352217010e4b8bd750d302b8062339d32

Lars Lindqvist lars.lindqvist at yandex.ru
Tue Apr 12 18:46:17 CEST 2016


Den 2016-04-12 skrev Takashi Iwai:
> Actually we have a semaphore before shm access, so the race at two
> opens shouldn't happen.  I noticed it after I sent my previous mail.
> 
> But the semaphore is taken also at snd_pcm_dmix_close().  So I wonder
> where the race actually happens.  Both open and close must be
> protected while another stream is opening or closing.
> 
> Could you try to check where you get the exact error...?

The execution tree, as far as I can find is the following:

snd_pcm_dmix_open:
 * Line 1009 snd_pcm_direct_shm_create_or_connect with the code in question,
 * which returns 0. So we end up in line 1058, dmix->shmtr->use_server is 0,
 * so go to line 1072.. running:
snd_pcm_open_slave, running:
snd_pcm_open_named_slave, running:
snd_pcm_open_conf
 * where snd_dlobj_cache_get gives open_func = snd_pcm_hw_open, so
snd_pcm_hw_open()
snd_open_device("/dev/snd/pcmC0D0p")
 * where open() returns -1 with errno = EBADFD

Regards,
Lars


More information about the Alsa-devel mailing list