AFAIK, the problem comes from buggy OSS driver of sblive!. it doesn't implement well the GETODELAY ioctl for ac3 passthrough, but mplayer relies on the returned value a _lot_. (bad value can cause desync or hangup). AFAIK it's a known driver bug/limitation but they don't seem to run fixing it :( maybe some workaround could help (the ac3dec and such external playback programs and the threaded video players (aviplay,xine) don't use GETODELAY ioctl so they may work...).
You were right. Swapping out the emu10k1 OSS drivers for ALSA solved the problems. The OSS Emulation of the SBLive is better than the native drivers. Funny. I sent an email suggesting that I document the process of getting it going. Let me know if this is something worth adding to the documentation. Aubin