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).

If nothing else, let this be stored to alsa-devel archives just in cases
the same bug bites someone else.

-- 
 http://www.eca.cx
 Audio software for Linux!




_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to