kern/54049: Sound driver reports device busy and shows non-existant PID in sndstat with artsd

Daniel O'Connor doconnor at gsoft.com.au
Wed Jul 2 18:10:24 PDT 2003


>Number:         54049
>Category:       kern
>Synopsis:       Sound driver reports device busy and shows non-existant PID in sndstat with artsd
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 02 18:10:17 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Daniel O'Connor
>Release:        FreeBSD 4.8-STABLE i386
>Organization:
>Environment:
System: FreeBSD chowder.gsoft.com.au 4.8-STABLE FreeBSD 4.8-STABLE #7: Wed Jun 25 20:29:38 CST 2003 darius at chowder.dons.net.au:/usr/src/sys/compile/CHOWDER i386

pcm0: <ESS Technology Maestro3> at io 0xdc00 irq 5 (4p/1r/0v channels duplex)

pcm0: <ESS Technology Maestro3> port 0xdc00-0xdcff mem 0xf6ffe000-0xf6ffffff irq 5 at device 3.0 on pci2
pcm0: <SigmaTel STAC9721/9723 ac97 codec>

>Description:
When restarting artsd to apply new changes, the sound driver appears to get confused and
reports a PID using the sound devices when that PID does not exist. Attempts to open the
sound devices result in EBUSY.

>How-To-Repeat:
- Install KDE :)
- Login, run artsd.
- /dev/sndstat shows arts using the device as expected.
- Play music.
- Run the 'Sound System' control centre item
- Toggle an option so that it will let you apply changes. Hit apply.
- Repeatedly cat /dev/sndstat and watch a new PID appear and use the device.
- Listen to the sound judder, then stop.
- Two dialogs pop up saying artsd cannot use the sound device as it's busy.
- cat /dev/sndstat again and note the PID is the same as previous.
- Run ps - the PID using the sound driver doesn't exist.

chowder 10:12] ~ >sysctl hw.snd
hw.snd.targetirqrate: 32
hw.snd.report_soft_formats: 1
hw.snd.verbose: 2
hw.snd.maxautovchans: 0
hw.snd.pcm0.buffersize: 4096
hw.snd.pcm0.vchans: 0
hw.snd.pcm0.hwvol_step: 5
hw.snd.pcm0.hwvol_mixer: vol

[chowder 10:13] ~ >cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <ESS Technology Maestro3> at io 0xdc00 irq 5 (4p/1r/0v channels duplex)
        [pcm0:play:0]: spd 44100, fmt 0x10000010, flags 00007030, pid 4404
	interrupts 2217, underruns 0, ready 57344
	{userland} -> feeder_root(0x10000010) -> {hardware}
	[pcm0:play:1]: spd 0, fmt 0x00000000/0x00000008, flags 00000000
	interrupts 0, underruns 0, ready 0
	{userland} -> feeder_root(0x00000000) -> {hardware}
	[pcm0:play:2]: spd 0, fmt 0x00000000/0x00000008, flags 00000000
	interrupts 0, underruns 0, ready 0
	{userland} -> feeder_root(0x00000000) -> {hardware}
	[pcm0:play:3]: spd 0, fmt 0x00000000/0x00000008, flags 00000000
	interrupts 0, underruns 0, ready 0
	{userland} -> feeder_root(0x00000000) -> {hardware}
	[pcm0:record:0]: spd 44100, fmt 0x10000010, flags 00007030, pid 4404
	interrupts 2217, overruns 0, hfree 4096, sfree 57344
	{hardware} -> feeder_root(0x10000010) -> {userland}

[chowder 10:13] ~ >ps -lawwwp 4404
  UID   PID  PPID CPU PRI NI   VSZ  RSS WCHAN  STAT  TT       TIME COMMAND
   1007  4404   416   0   2  0  8048 6140 poll   S     ??    0:01.15 artsd -F 14 -S 4096 -d -n -s 5 -m artsmessage -l 3 -f
													
[ restart artsd ]

[chowder 10:14] ~ >cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <ESS Technology Maestro3> at io 0xdc00 irq 5 (4p/1r/0v channels duplex)
        [pcm0:play:0]: spd 44100, fmt 0x10000010, flags 00000000
        interrupts 0, underruns 0, ready 0
        {userland} -> feeder_root(0x10000010) -> {hardware}
        [pcm0:play:1]: spd 44100, fmt 0x10000010, flags 00007030, pid 4424
        interrupts 15, underruns 0, ready 224
        {userland} -> feeder_root(0x10000010) -> {hardware}
        [pcm0:play:2]: spd 0, fmt 0x00000000/0x00000008, flags 00000000
        interrupts 0, underruns 0, ready 0
        {userland} -> feeder_root(0x00000000) -> {hardware}
        [pcm0:play:3]: spd 0, fmt 0x00000000/0x00000008, flags 00000000
        interrupts 0, underruns 0, ready 0
        {userland} -> feeder_root(0x00000000) -> {hardware}
        [pcm0:record:0]: spd 44100, fmt 0x10000010, flags 00007020, pid 4424
        interrupts 15, overruns 0, hfree 4096, sfree 5312
        {hardware} -> feeder_root(0x10000010) -> {userland}

[chowder 10:16] ~ >ps -lawwwp 4424
  UID   PID  PPID CPU PRI NI   VSZ  RSS WCHAN  STAT  TT       TIME COMMAND

[chowder 10:17] ~ >ps -axw| grep art
  399  ??  I      0:00.01 /bin/sh /usr/local/bin/startkde
 4427  ??  S      0:09.70 artsd -F 14 -S 4096 -d -n -s 5 -m artsmessage -l 3 -f

[ Here is is running with the null driver ]

[chowder 10:16] ~ >fstat /dev/dsp0
USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W NAME

>Fix:

The vchans remain unbusy, so I can use those as a work around, or reboot.
(Although the record channel remains glued busy)


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list