qemu/audio
Volker Rümelin ceb1165e9d coreaudio: always stop audio playback on shut down
Always stop audio playback and remove the playback callback when
QEMU exits.

On shut down the function coreaudio_fini_out() destroys the
coreaudio mutex but fails to stop audio playback and to remove the
audio playback callback, because function audio_is_cleaning_up()
always returns true when called from coreaudio_fini_out(). Now
there is a time window from pthread_mutex_destroy() to program
exit where Core Audio may call the audio playback callback which
tries to lock the destroyed coreaudio mutex. This leads to the
following error.

coreaudio: Could not lock voice for audioDeviceIOProc
Reason: Invalid argument

This bug was reported on the qemu-discuss mailing list.
https://lists.nongnu.org/archive/html/qemu-discuss/2020-10/msg00018.html

Tested-by: Howard Spoelstra <hsp.cat7@gmail.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-id: 20201213130528.5863-3-vr_qemu@t-online.de
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2020-12-15 09:14:17 +01:00
..
alsaaudio.c audio/alsaaudio: Remove superfluous semicolons 2020-02-18 20:20:49 +01:00
audio_int.h audio: proper support for float samples in mixeng 2020-02-06 14:35:57 +01:00
audio_legacy.c qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
audio_template.h audio/jack: add JACK client audiodev 2020-05-25 11:30:03 +02:00
audio_win_int.c audio: use qapi AudioFormat instead of audfmt_e 2019-03-11 10:29:26 +01:00
audio_win_int.h Windows Waveform Audio driver (no ADC support yet) 2009-10-10 01:18:24 +04:00
audio.c audio: remove qemu_spice_audio_init() 2020-09-23 08:36:50 +02:00
audio.h audio: Let capture_callback handler use const buffer argument 2020-05-26 08:29:39 +02:00
coreaudio.c coreaudio: always stop audio playback on shut down 2020-12-15 09:14:17 +01:00
dsound_template.h audio/dsound: fix invalid parameters error 2020-02-06 14:31:20 +01:00
dsoundaudio.c dsoundaudio: dsound_get_buffer_in should honor *size 2020-04-06 13:29:53 +02:00
jackaudio.c audio/jack: fix use after free segfault 2020-11-13 07:36:33 +01:00
meson.build meson: add spice_headers dependency. 2020-10-15 11:14:40 +02:00
mixeng_template.h audio: fix saturation nonlinearity in clip_* functions 2020-03-16 10:18:07 +01:00
mixeng.c audio: Let audio_sample_to_uint64() use const samples argument 2020-05-26 08:29:30 +02:00
mixeng.h audio: proper support for float samples in mixeng 2020-02-06 14:35:57 +01:00
noaudio.c audio: fix bug 1858488 2020-01-31 08:48:03 +01:00
ossaudio.c ossaudio: fix out of bounds write 2020-07-13 11:38:40 +02:00
paaudio.c audio: proper support for float samples in mixeng 2020-02-06 14:35:57 +01:00
rate_template.h audio: use size_t where makes sense 2019-08-21 09:13:37 +02:00
sdlaudio.c audio: proper support for float samples in mixeng 2020-02-06 14:35:57 +01:00
spiceaudio.c spice: move add_interface() to QemuSpiceOps. 2020-10-21 15:46:14 +02:00
trace-events trace-events: Delete unused trace points 2020-09-09 17:17:02 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
wavaudio.c audio: fix bug 1858488 2020-01-31 08:48:03 +01:00
wavcapture.c monitor: Use getter/setter functions for cur_mon 2020-10-09 07:08:19 +02:00