qemu system emulator fails to start if no sound card is present on host

Bug #1816052 reported by Daniel Berrange
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

A plain build from git master at 81dbcfa9e1d8bab3f7c4cc923c0b40cd666f374f on Fedora 29 x86_64 host, with no options passed to configure.

Trying to launch QEMU on a host with no audio card present:

# ls /dev/snd/
seq timer

It will fail to initialize alsa and abort startup:

# qemu-system-x86_64 -cdrom Fedora-Workstation-Live-x86_64-29-1.2.iso -m 4000 -vnc 0.0.0.0:1
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4555:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4555:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4555:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5034:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM default
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: No such file or directory
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4555:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4555:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4555:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5034:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM default
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: No such file or directory
init fail
audio: Failed to create voice `pcspk'
qemu-system-x86_64: Initialization of device isa-pcspk failed: Initializing audio voice failed

git bisect blames this change:

  commit 6a48541873f14b597630283f8f5397674ad82ea9 (HEAD, refs/bisect/bad)
  Author: Gerd Hoffmann <email address hidden>
  Date: Thu Jan 24 12:20:55 2019 +0100

    audio: probe audio drivers by default

    Add the drivers listed in audio_possible_drivers to audio_drv_list,
    using the try-* variants. That way the probable drivers are compiled by
    default if possible.

    Additioal tweaks:
      linux: reorder to: pa alsa sdl oss.
      *bsd: drop pa.

    Signed-off-by: Gerd Hoffmann <email address hidden>
    Message-id: <email address hidden>

This changed our probe order:

   Linux)
  - audio_drv_list="oss"
  + audio_drv_list="try-pa try-alsa try-sdl oss"

After some debugging I can see that 'audio_init' successfully initializes the alsa driver.

When the pcspk devices goes to AUD_open_out though, the alsa driver fails spewing the above text to stderr and thus causes QEMU to fail.

This looks very much like the ALSA driver in QEMU is broken - audio_init() should not have succeeded unless the ALSA driver knew it could later succesfully honour AUD_open_out.

Revision history for this message
Kris M (krislema2) wrote :

Don't know if same but just noticed "no sound" unless I unplug and replug headphones. If I boot with no headphones plugged in I get no sound, but if I plug in headphones I get sound. Of course, then, if I unplug headphones I still get sound. Something about plugging/unplugging to the headphones jack wakes things up.

ThinkPad T530-2394-3J8, i5-3380M 2.9GHz, Dual boot (BIOS/MBR): Grub, Ubuntu 18.10 / Win7 Pro x64 . 8GB(15GB/s), Sammy 250GB SSD. Fast!

4.19.0-13 kern and previous. current: I take all updates.

Revision history for this message
Kris M (krislema2) wrote :

That was Ubuntu DD current on comment #1

Revision history for this message
Jeremy Bícha (jbicha) wrote :

Kris, your situation is completely different.

Revision history for this message
Kris M (krislema2) wrote :

I agree. Thanks. :)

Revision history for this message
Gerd Hoffmann (kraxel-redhat) wrote :

What happens if you remove "try-alsa" from the configure line?

Revision history for this message
Like Xu (likexu) wrote :

I would work around this issue
by applying "export QEMU_AUDIO_DRV=none" to shell before we run the qemu command.

Revision history for this message
Peter Maydell (pmaydell) wrote :

This bug was fixed by commit 7183834a29fbaf422a6 which will be in 4.0.

Changed in qemu:
status: New → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.