I regularly have a problem with my sound card: it simply stops working, and xine (and everything else) says that it cannot open the sound socket. So, I need to unload and reload the snd_hda_intel module. Most of the time, however, I cannot since it is in use. I try to close all possibly using sound, but most of the time it is a dead process that is using it. But, I have figured out how to find these unruly processes:
1) fuser -a /dev/snd/pcmxxxx (where try all here, xxxx can be anything)
2) for each process ID (PID) listed, do a, do “ps xa | grep PID”, so see what the process is. Close it cleanly, if possible (through the gui), or “kill” it if it is a hanged process. Most of the time, it is a program in a messed-up state – in my case it is sometimes a “kio-exec” process. Killing is simply “kill PID” or, more harshly, “kill -9 PID”.
Now issue “rmmod snd_hda_intel” and then “modprobe snd_hda_intel”. Done! :)