[alsa-devel] lock-up when loading desktop
Arthur Marsh
arthur.marsh at internode.on.net
Tue Oct 14 08:24:08 CEST 2014
Takashi Iwai wrote, on 14/10/14 07:44:
>>> had a similar lock-up (see second photo)
>>
>> I looked at the relevant code now, and this indeed seems like a
>> deadlock. But it's nothing new, the code is a decade old. I wonder
>> why it appears out of sudden. Maybe the change of the spin lock path
>> triggers.
>>
>> The patch below is the fix, just removing the superfluous spinlock.
After applying *both*:
---
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 85fe1a216225..bfe1cf6b492f 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -818,7 +818,7 @@ static int snd_pcm_action_group(struct action_ops *ops,
/* unlock streams */
snd_pcm_group_for_each_entry(s1, substream) {
if (s1 != substream) {
- if (s->pcm->nonatomic)
+ if (s1->pcm->nonatomic)
mutex_unlock(&s1->self_group.mutex);
else
spin_unlock(&s1->self_group.lock);
and the patch to pcm_native.c below:
>
> Also below is another thing I spotted now, but this is likely
> irrelevant from the lockup, supposedly. In anyway, try this one
> together with the previous patch, too.
>
>
> Takashi
>
> ---
> diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
> index 85fe1a216225..bfe1cf6b492f 100644
> --- a/sound/core/pcm_native.c
> +++ b/sound/core/pcm_native.c
> @@ -818,7 +818,7 @@ static int snd_pcm_action_group(struct action_ops *ops,
> /* unlock streams */
> snd_pcm_group_for_each_entry(s1, substream) {
> if (s1 != substream) {
> - if (s->pcm->nonatomic)
> + if (s1->pcm->nonatomic)
> mutex_unlock(&s1->self_group.mutex);
> else
> spin_unlock(&s1->self_group.lock);
>
against current Linus git head,
I can run alsa-info.sh successfully and launch the desktop and play
sounds generally (tested with MIDI and running aplay somefile.wav)
Thank you very much for the patches!
Regards,
Arthur.
More information about the Alsa-devel
mailing list