[tiwai/for-next] hard lockups with pipewire and snd-usb-audio

From: Hector Martin
Date: Fri Jul 02 2021 - 06:34:20 EST


Hi Takashi,

I've been testing builds from your for-next branch to get the recent firewire fixes. All that works fine, but instead I've been getting hard lockups with pipewire and snd-usb-audio. I'm currently on 9a7b7ec3c6.

Backtrace:

do_raw_spin_lock+0x8e/0x90
_raw_spin_lock_irqsave+0x3e/0x50
? snd_pcm_period_elapsed+0x10/0x30 [snd_pcm]
snd_pcm_period_elapsed+0x10/0x30 [snd_pcm]
snd_usb_endpoint_start+0xd8/0x270 [snd_usb_audio]
start_endpoints+0x50/0x70 [snd_usb_audio]
snd_usb_substream_playback_trigger+0x58/0x100 [snd_usb_audio]
snd_pcm_action+0x74/0xb0 [snd_pcm]
snd_pcm_action_lock_irq+0x36/0x80 [snd_pcm]
snd_pcm_ioctl+0x1e/0x30 [snd_pcm]
__x64_sys_ioctl+0x7d/0xb0
do_syscall_64+0x45/0x80
entry_SYSCALL_64_after_hwframe+0x44/0xae

To me it looks like it's recursively trying to lock the stream spinlock.

I'm not sure what version this is a regression from; I've only triggered it with pipewire so far, which I wasn't previously using. It's easy to reproduce. Usually, pulling up pavucontrol on pipewire with the USB audio device on an active profile will do it.

Just thought you might want to know. Let me know if you need any more info.

--
Hector Martin (marcan@xxxxxxxxx)
Public Key: https://mrcn.st/pub