qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: OSS audio debugging


From: Mike Nordell
Subject: [Qemu-devel] Re: OSS audio debugging
Date: Fri, 11 Jun 2004 00:59:04 +0200

malc wrote:

> ... while im figuring this out you can
> try experimental SDL output driver(but see caveats):
> http://www.boblycat.org/~malc/code/patches/qemu/5_aqemu.patch.gz
[snip]
> b. it was hacked in an hour or so and therefore i can not claim that it
>    works all that well, in fact it contains a deadlock

Indeed.

> P.S. Can someone on Windows try this?

Done, and it fails miserably. It hangs QEMU due to the deadlock (NT5sp4 both
host and guest).

One thread is waiting in for the semaphore "s" in audio_callback, called
from SDL_RunAudio in SDL's audio thread, while another thread is doing some
seriously wicked:

dsp_write (sb16.c)
complete (sb16.c)
dma_cmd (sb16.c)
AUD_reset (oss.c)
maybe_open (oss.c)
do_open (oss.c)
SDL_CloseAudio
SDL_QuitSubSystem
SDL_AudioQuit
SDL_WaitThread

The deadlock is of course that the callback thread is hanging in sem_wait()
in oss.c, while the requested shutdown of SDL's audio subsystem is waiting
for that very audio thread to die. Yep, instant deadlock (not to mention a
possibly very slow and heavy-weight operation in response to a virtual SB16
DSP DMA transfer).

Another thing I found odd was the use of AUDIO_S16/copy_u16_to_s16 in
response to a request for AUD_FMT_U16. Any particular reason to not request
AUDIO_U16 and use copy_no_conversion?

Problems set aside, this is a giant leap forward for Win32 host audio and is
something I really want to see get into CVS once cleaned up and debugged.
I'll do some more debugging on my side too.

Thanks!

/Mike





reply via email to

[Prev in Thread] Current Thread [Next in Thread]