audio: when is a "Resource temporarily unavailable"?

Maarten Lankhorst m.b.lankhorst at gmail.com
Tue Sep 13 10:32:20 CDT 2011


Hey,

On 09/12/2011 02:14 PM, Joerg-Cyril.Hoehle at t-systems.com wrote:
> Hi,
>
> Bug #28056 involving FreeBSD and OSS exhibits:
> warn:oss:AudioRenderClient_ReleaseBuffer write failed: 35 (Resource temporarily unavailable)
>
> My own notes from times as old as wine-1.1.8 show the same error with ALSA:
> err:wave:wodPlayer_WriteMaxFrags Error in writing wavehdr. Reason: Resource temporarily unavailable
>
> The symbolic errno constant is EAGAIN=EWOULDBLOCK.
So we look at write manpage..

       EAGAIN or EWOULDBLOCK
              The file descriptor fd refers to a socket and has been
              marked nonblocking (O_NONBLOCK), and the  write  would
              block.    POSIX.1-2001   allows  either  error  to  be
              returned for this case, and  does  not  require  these
              constants to have the same value, so a portable appli‐
              cation should check for both possibilities.

> Does anybody have a suspicion when/why this happens?
> - is audio simply not reliable?
> - is Wine not correctly driving audio output?
> - ...?
>
> FWIW, my test experiments outside Wine recently produced EWOULDBLOCK
> once despite non-blocking mode in ALSA, when attempting to write a small
> number of frames, less than period_size.
>
> Is this failure really temporary or would it be safer
> to close or reset the audio device given such an error value?
> What's your experience?
>
Usually: you're trying to put more data in the audio buffer than the amount that can written.
Similar errors happen on alsa, when trying to write > snd_pcm_avail();
Looks like a bug to me.

~Maarten



More information about the wine-devel mailing list