vhost-device/vhost-device-sound
Davíð Steinn Geirsson 15f812953e sound: fix panic on I/O to a stopped stream
process_io() would unwrap() the result of b.write()/b.read(), panicking
if the stream was in any state other than Start or Prepare. This could
happen when the guest queued Tx buffers and then sent PcmStop before
they were all consumed — a normal race between the control and I/O
queues.

Replace the unwrap() calls with a logged warning. Queued requests in
stream.requests are harmless and will be cleared on PcmRelease.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 21:31:34 +00:00
..
src sound: fix panic on I/O to a stopped stream 2026-03-17 21:31:34 +00:00
Cargo.toml build(deps): bump the non-rust-vmm group across 2 directories with 54 updates 2026-03-02 09:54:13 +02:00
CHANGELOG.md vhost-device-sound: add --socket-fd argument 2025-11-20 17:24:04 +02:00
LICENSE-APACHE sound: fix symbolic links to license files 2024-01-10 11:23:08 +05:30
LICENSE-BSD-3-Clause sound: fix symbolic links to license files 2024-01-10 11:23:08 +05:30
README.md sound: document --streams CLI option in README 2026-03-17 19:33:57 +00:00

vhost-device-sound

Synopsis

   vhost-device-sound --socket <SOCKET> --backend <BACKEND>

Description

   A virtio-sound device using the vhost-user protocol.

Options

     --socket <SOCKET>
            vhost-user Unix domain socket path

     --socket-fd <FD>
            listening vhost-user Unix domain socket file descriptor
            (e.g. from a service manager)

     --backend <BACKEND>
            audio backend to be used [possible values: null, pipewire, alsa, gstreamer]

     --streams <STREAMS>
            comma-separated list of stream directions to enable [possible values: output, input]
            (default: output,input)

     -h, --help
            Print help

     -V, --version
            Print version

Examples

Launch the backend on the host machine:

host# vhost-device-sound --socket /tmp/snd.sock --backend null

With QEMU, you can add a virtio device that uses the backend's socket with the following flags:

-chardev socket,id=vsnd,path=/tmp/snd.sock \
-device vhost-user-snd-pci,chardev=vsnd,id=snd

License

This project is licensed under either of