[Python-Dev] test_ossaudiodev hanging again (original) (raw)

Greg Ward gward@python.net
Sat, 26 Apr 2003 22:05:41 -0400


On 25 April 2003, Guido van Rossum said:

It probably never stopped hanging. It only runs when you pass "-u audio" to regrtest though.

I note that it passes for me with Red Hat 7.3, so you might want to upgrade. :-)

Could be hardware, or it could be the device driver in the kernel. Jeremy, what audio software do you use regularly -- xmms? play? anything? ossaudiodev currently goes to great pains to open the audio device in what seems to be the right way, but I have no idea if it really is.

(Oh yeah: it opens with O_NONBLOCK, to avoid hanging on the open() call. Then it uses fcntl() to put the device back in blocking mode, so that write() acts sanely. If you really want to do non-blocking audio I/O, you use the nonblock() method, which uses an OSS-specific ioctl(). O_NONBLOCK has no documented meaning with OSS; using it at open() time was just a lucky guess on my part. It does seem to affect write(), at least with one of my audio devices. [I have a sound card and an external USB audio device, which makes things interesting at times.])

    Greg

-- Greg Ward <gward@python.net> http://www.gerg.ca/ If you and a friend are being chased by a lion, it is not necessary to outrun the lion. It is only necessary to outrun your friend.