Bug 295869 - virtual_oss unkillable
Summary: virtual_oss unkillable
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 15.1-RELEASE
Hardware: Any Any
: --- Affects Only Me
Assignee: Christos Margiolis
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-06-05 08:22 UTC by Pero Oršolić
Modified: 2026-06-11 09:33 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pero Oršolić 2026-06-05 08:22:58 UTC
I'm running virtual_oss for changing between internal card (dsp2) and USB (dsp5) on FreeBSD 15.1-RC2.
virtual_oss worked for days, switched sound between internal and external card for Firefox, mpv, WINE.
I was toying with 2nd USB card (dsp6) which is RP2040 MCU with DSPi firmware, but I am not sure if that provoked this.
That "sound card" produces sound on other FreeBSD PC without virtual_oss. On this system trying to play something with mpv will result in stuck audio output - no sound, timestamps are frozen, but there are no errors.
Tried to stop virtual_oss but it is still in the list of processes. Closed all application which use sound, still unkillable.

# cat /dev/sndstat
Installed devices:
pcm0: <ATI R6xx (HDMI)> (play)
pcm1: <ATI R6xx (HDMI)> (play)
pcm2: <Realtek ALCS1200A (Rear Analog 5.1/2.0)> (play/rec) default
pcm3: <Realtek ALCS1200A (Front Analog)> (play/rec)
pcm4: <Realtek ALCS1200A (Rear Digital)> (play)
pcm5: <Jieli Technology USB Composite Device> (play/rec)
pcm6: <WeebLabs ASDF Weeb Labs DSPi> (play)
Installed devices from userspace:
dsp: <virtual_oss device> (play/rec)

# grep virtual_oss /etc/rc.conf
virtual_oss_enable="YES"
virtual_oss_dsp="-i 8 -c 2 -S -r 48000 -b 16 -s 16ms -f /dev/dsp2 -d dsp -t dsp.ctl"

# ps aux | grep virtual_oss
root        3548    0.0  0.1    85464   23860  -  D<Es Mon13      71:45.94 /usr/sbin/virtual_oss -B -D /var/run/virtual_oss/dsp.pid -i 8 -c 2 -S -r 48000 -b 16 -s 16ms -f /dev/dsp2 -d dsp -t dsp.ctl

Process is in unkillable state (D). It is single process in that state
# ps -axl | grep ' D'
   0     0     0  2 -15   0        0    7952 -        DLs   -     97:52.90 [kernel]
   0     3     0  9 -15   0        0     272 crypto_w DL    -      0:00.00 [crypto]
   0     4     0  5 -15   0        0      80 -        DL    -      1:44.40 [cam]
   0     5     0  4 -54   0        0      16 -        DL    -      0:00.00 [busdma]
   0     6     0 13   0   0        0    5216 t->zthr_ DL    -     15:12.33 [zfskern]
   0     7     0 12 -15   0        0      16 -        DL    -      0:42.40 [rand_harvestq]
   0     8     0 14 -15   0        0      48 psleep   DL    -     17:02.62 [pagedaemon]
   0     9     0 15 -15   0        0      16 psleep   DL    -      3:02.29 [vmdaemon]
   0    10     0 13 -15   0        0      16 audit_wo DL    -      0:00.00 [audit]
   0    13     0  8   0   0        0      48 -        DL    -      0:00.09 [geom]
   0    14     0  5 -54   0        0     240 -        DL    -     32:57.17 [usb]
   0    15     0 10 -15   0        0     128 psleep   DL    -      0:08.65 [bufdaemon]
   0    16     0 12 -15   0        0      16 vlruwt   DL    -      0:01.64 [vnlru]
   0    17     0 10  -7   0        0      16 syncer   DL    -      0:03.86 [syncer]
   0    18     0 15 -15   0        0      16 -        DL    -      4:15.73 [racctd]
   0  2182     0 15 -15   0        0     256 sleep    DL    -      0:00.00 [ng_queue]
   0  3319     0 13 -15   0        0      16 pftm     DL    -      1:08.50 [pf purge]
   0  3548     1 15 -40   0    85464   23860 W        D<Es  -     71:45.88 /usr/sbin/virtual_oss -B -D /var/run/virtual_oss/dsp.pid -i 8 -c 2 -S -r 48000 -b 16 -s 16ms -f /dev/dsp2 -d dsp -t dsp.ctl

# procstat -b 3548
  PID COMM                OSREL PATH

# procstat -f 3548
procstat: kinfo_getfile(): No such process
  PID COMM                FD T V FLAGS    REF  OFFSET PRO NAME

# fstat -p 3548
USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W
fstat: kinfo_getfile(): No such process

# procstat -k 3548
  PID    TID COMM                TDNAME              KSTACK

# procstat -v 3548
  PID              START                END PRT  RES PRES REF SHD FLAG  TP PATH

# procstat -t 3548
  PID    TID COMM                TDNAME              CPU  PRI STATE   WCHAN
 3548 101546 virtual_oss         -                    -1   16 sleep   W
Comment 1 Christos Margiolis freebsd_committer freebsd_triage 2026-06-07 21:29:31 UTC
I've already pushed some patches to -CURRENT that should fix your issue, and I also just pushed them to 15.1-STABLE as well, so if a new RC version for 15.1 gets released, it should include them.