The http://labs.adobe.com/wiki/index.php/Talk:Flash_Player:Additional_Interface_Support_for_Linux#Native_OSS.2C_emu10k1_and_browser_hang page identifies several bugs in OSS backend and provides fixes. These changes are absent from the version in CVS. (There's also a suggested change for ALSA, but I'm not sure how correct it is). I'm attaching some text from the comments for reference:
"In oss_thread():
written = write(instance->oss_fd, buffer, len);
should be:
written = write(instance->oss_fd, buffer+4096-len, len);"
"if ( ( value = ioctl(instance->oss_fd,SNDCTL_DSP_GETODELAY,&value) ) == 0 ) {
'value =' shouldn't be there, value will be the ioctl return, which is wrong."
"The OSS FPX_SoundOutput_Close() function sends the SNDCTL_DSP_RESET ioctl before shutting down the thread that writes data to /dev/dsp (the oss_thread() function) - and it appears that any writes to /dev/dsp after this ioctl hang ..." [Of course it makes problems - RESET undos the device initialization and now format/channel/rate are undefined]
"To get the ALSA functions to work on my system, I had to replace the line in FPX_SoundOutput_Open:
if (snd_pcm_hw_params_get_period_size(hwparams, &size, &direction) < 0) goto fail;
with:
if (snd_pcm_hw_params_set_period_size_last(instance->handle, hwparams, &size, &direction) < 0) goto fail;"