On Tue, 9 Oct 2001, Kai Vehmanen wrote: > You have /dev/dsp opened for playback. Then: > > int enable_bits = ~PCM_ENABLE_OUTPUT; /* disables playback */ > ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &enable_bits) == -1) > > ... next you start writing data to the device, but forget to ever issue > the actual trigger call (ie. > > int enable_bits = PCM_ENABLE_OUTPUT; > ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &enable_bits); > > ). Now this causes a more-or-less complete system-freeze (SMP, user > priviledges). The latest ecasound development version (2.1dev0) failed to > ever start the audio device and thus triggered this bug. It took quite a > while to trace down the problem. Finally S.Massy was able to pinpoint the > problem to oss-emulation, and problem was resolved. > > Of course, this is really an application side problem (fixed in ecasound > 2.1dev1 btw), but it might make sense to add a safety-bealt to the > oss-emulation. OSS/comm drivers survived the buggy ecasound. Also ALSA's > native pcm-interface survived (SND_PCM_START_EXPLICIT set, after buffer > became full without an snd_pcm_start(), snd_pcm_writei() returned an > error).
Thanks for this bug report. The following patch (already applied to CVS) should fix this problem: Index: pcm_oss.c =================================================================== RCS file: /cvsroot/alsa/alsa-driver/kernel/oss/pcm_oss.c,v retrieving revision 1.101 diff -u -r1.101 pcm_oss.c --- pcm_oss.c 2001/10/09 14:47:28 1.101 +++ pcm_oss.c 2001/10/09 16:11:13 @@ -506,6 +506,10 @@ snd_leave_user(fs); if (ret != -EPIPE && ret != -ESTRPIPE) break; + /* test, if we can't store new data, because the stream */ + /* has not been started */ + if (runtime->status->state == SNDRV_PCM_STATE_PREPARED) + return -EAGAIN; } return ret; } @@ -556,6 +560,10 @@ snd_leave_user(fs); if (ret != -EPIPE && ret != -ESTRPIPE) break; + /* test, if we can't store new data, because the stream */ + /* has not been started */ + if (runtime->status->state == SNDRV_PCM_STATE_PREPARED) + return -EAGAIN; } return ret; } Jaroslav ----- Jaroslav Kysela <[EMAIL PROTECTED]> SuSE Linux http://www.suse.com ALSA project http://www.alsa-project.org _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel