All of lore.kernel.org
 help / color / mirror / Atom feed
* 3.18.0-rc1 pulseaudio possible recursive locking
@ 2014-10-20 14:00 Arthur Marsh
  2014-10-21  5:27 ` Takashi Iwai
  0 siblings, 1 reply; 4+ messages in thread
From: Arthur Marsh @ 2014-10-20 14:00 UTC (permalink / raw)
  To: ALSA devel

Hi, I have been seeing this a few times lately, and noticed that it was 
still present

Is this the right place to report it or should I be reporting a bug 
against pulseaudio?


[  182.273991] =============================================
[  182.273996] [ INFO: possible recursive locking detected ]
[  182.274003] 3.18.0-rc1 #1297 Not tainted
[  182.274008] ---------------------------------------------
[  182.274013] pulseaudio/5183 is trying to acquire lock:
[  182.274018]  (&(&substream->self_group.lock)->rlock/1){......}, at: 
[<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
[  182.274063]
but task is already holding lock:
[  182.274069]  (&(&substream->self_group.lock)->rlock/1){......}, at: 
[<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
[  182.274092]
other info that might help us debug this:
[  182.274098]  Possible unsafe locking scenario:

[  182.274104]        CPU0
[  182.274108]        ----
[  182.274112]   lock(&(&substream->self_group.lock)->rlock/1);
[  182.274122]   lock(&(&substream->self_group.lock)->rlock/1);
[  182.274132]
  *** DEADLOCK ***

[  182.274138]  May be due to missing lock nesting notation

[  182.274146] 4 locks held by pulseaudio/5183:
[  182.274151]  #0:  (snd_pcm_link_rwlock){......}, at: [<f8432fe3>] 
snd_pcm_stream_lock+0x1b/0x43 [snd_pcm]
[  182.274177]  #1:  (&(&substream->self_group.lock)->rlock){......}, 
at: [<f8432fee>] snd_pcm_stream_lock+0x26/0x43 [snd_pcm]
[  182.274202]  #2:  (&(&substream->group->lock)->rlock){......}, at: 
[<f8432cf4>] snd_pcm_action+0x34/0x10b [snd_pcm]
[  182.274227]  #3:  (&(&substream->self_group.lock)->rlock/1){......}, 
at: [<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
[  182.274254]
stack backtrace:
[  182.274263] CPU: 1 PID: 5183 Comm: pulseaudio Not tainted 3.18.0-rc1 
#1297
[  182.274269] Hardware name: System Manufacturer System Name/P4S800, 
BIOS ASUS P4S800 ACPI BIOS Revision 1011 Beta 001 08/30/2005
[  182.274275]  c1bfc4e0 00000000 e55c9d50 c145d969 c1bfc4e0 e55c9dd4 
c1082b7b c15b7f9a
[  182.274295]  e55b630c 0000143f 00000000 e55b6010 e55b6070 00000000 
5402a095 00000004
[  182.274315]  c17a4034 c1bfc4e0 e55b6508 e55b6520 00000000 00000008 
00000000 e55b6508
[  182.274335] Call Trace:
[  182.274353]  [<c145d969>] dump_stack+0x4b/0x75
[  182.274366]  [<c1082b7b>] __lock_acquire+0x187c/0x19b3
[  182.274378]  [<c10834ad>] lock_acquire+0xa1/0x126
[  182.274394]  [<f8432284>] ? snd_pcm_action_group+0x96/0x215 [snd_pcm]
[  182.274404]  [<c1463a9d>] _raw_spin_lock_nested+0x41/0x4e
[  182.274420]  [<f8432284>] ? snd_pcm_action_group+0x96/0x215 [snd_pcm]
[  182.274436]  [<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
[  182.274445]  [<c146393b>] ? _raw_spin_trylock+0x6b/0x80
[  182.274462]  [<f8432d0f>] snd_pcm_action+0x4f/0x10b [snd_pcm]
[  182.274479]  [<f843332a>] snd_pcm_drop+0x4a/0x7d [snd_pcm]
[  182.274496]  [<f84351d9>] snd_pcm_common_ioctl1+0x7b0/0xcc4 [snd_pcm]
[  182.274514]  [<f84357ce>] snd_pcm_playback_ioctl1+0xe1/0x3a8 [snd_pcm]
[  182.274532]  [<f8435ab7>] snd_pcm_playback_ioctl+0x22/0x35 [snd_pcm]
[  182.274549]  [<f8435a95>] ? snd_pcm_playback_ioctl1+0x3a8/0x3a8 [snd_pcm]
[  182.274561]  [<c1171e82>] do_vfs_ioctl+0x306/0x576
[  182.274573]  [<c117d3ca>] ? mntput_no_expire+0x61/0x1e7
[  182.274583]  [<c117d377>] ? mntput_no_expire+0xe/0x1e7
[  182.274594]  [<c117d56b>] ? mntput+0x1b/0x29
[  182.274603]  [<c1161438>] ? __fput+0x144/0x1aa
[  182.274614]  [<c1172147>] SyS_ioctl+0x55/0x75
[  182.274624]  [<c14646e0>] sysenter_do_call+0x12/0x12

Regards,

Arthur.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: 3.18.0-rc1 pulseaudio possible recursive locking
  2014-10-20 14:00 3.18.0-rc1 pulseaudio possible recursive locking Arthur Marsh
@ 2014-10-21  5:27 ` Takashi Iwai
  2014-10-21 13:38   ` Takashi Iwai
  0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2014-10-21  5:27 UTC (permalink / raw)
  To: Arthur Marsh; +Cc: ALSA devel

At Tue, 21 Oct 2014 00:30:59 +1030,
Arthur Marsh wrote:
> 
> Hi, I have been seeing this a few times lately, and noticed that it was 
> still present
> 
> Is this the right place to report it or should I be reporting a bug 
> against pulseaudio?

This is likely a false-positive report, so ignore it unless you really
encounter the deadlock by this.


Takashi

> 
> 
> [  182.273991] =============================================
> [  182.273996] [ INFO: possible recursive locking detected ]
> [  182.274003] 3.18.0-rc1 #1297 Not tainted
> [  182.274008] ---------------------------------------------
> [  182.274013] pulseaudio/5183 is trying to acquire lock:
> [  182.274018]  (&(&substream->self_group.lock)->rlock/1){......}, at: 
> [<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
> [  182.274063]
> but task is already holding lock:
> [  182.274069]  (&(&substream->self_group.lock)->rlock/1){......}, at: 
> [<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
> [  182.274092]
> other info that might help us debug this:
> [  182.274098]  Possible unsafe locking scenario:
> 
> [  182.274104]        CPU0
> [  182.274108]        ----
> [  182.274112]   lock(&(&substream->self_group.lock)->rlock/1);
> [  182.274122]   lock(&(&substream->self_group.lock)->rlock/1);
> [  182.274132]
>   *** DEADLOCK ***
> 
> [  182.274138]  May be due to missing lock nesting notation
> 
> [  182.274146] 4 locks held by pulseaudio/5183:
> [  182.274151]  #0:  (snd_pcm_link_rwlock){......}, at: [<f8432fe3>] 
> snd_pcm_stream_lock+0x1b/0x43 [snd_pcm]
> [  182.274177]  #1:  (&(&substream->self_group.lock)->rlock){......}, 
> at: [<f8432fee>] snd_pcm_stream_lock+0x26/0x43 [snd_pcm]
> [  182.274202]  #2:  (&(&substream->group->lock)->rlock){......}, at: 
> [<f8432cf4>] snd_pcm_action+0x34/0x10b [snd_pcm]
> [  182.274227]  #3:  (&(&substream->self_group.lock)->rlock/1){......}, 
> at: [<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
> [  182.274254]
> stack backtrace:
> [  182.274263] CPU: 1 PID: 5183 Comm: pulseaudio Not tainted 3.18.0-rc1 
> #1297
> [  182.274269] Hardware name: System Manufacturer System Name/P4S800, 
> BIOS ASUS P4S800 ACPI BIOS Revision 1011 Beta 001 08/30/2005
> [  182.274275]  c1bfc4e0 00000000 e55c9d50 c145d969 c1bfc4e0 e55c9dd4 
> c1082b7b c15b7f9a
> [  182.274295]  e55b630c 0000143f 00000000 e55b6010 e55b6070 00000000 
> 5402a095 00000004
> [  182.274315]  c17a4034 c1bfc4e0 e55b6508 e55b6520 00000000 00000008 
> 00000000 e55b6508
> [  182.274335] Call Trace:
> [  182.274353]  [<c145d969>] dump_stack+0x4b/0x75
> [  182.274366]  [<c1082b7b>] __lock_acquire+0x187c/0x19b3
> [  182.274378]  [<c10834ad>] lock_acquire+0xa1/0x126
> [  182.274394]  [<f8432284>] ? snd_pcm_action_group+0x96/0x215 [snd_pcm]
> [  182.274404]  [<c1463a9d>] _raw_spin_lock_nested+0x41/0x4e
> [  182.274420]  [<f8432284>] ? snd_pcm_action_group+0x96/0x215 [snd_pcm]
> [  182.274436]  [<f8432284>] snd_pcm_action_group+0x96/0x215 [snd_pcm]
> [  182.274445]  [<c146393b>] ? _raw_spin_trylock+0x6b/0x80
> [  182.274462]  [<f8432d0f>] snd_pcm_action+0x4f/0x10b [snd_pcm]
> [  182.274479]  [<f843332a>] snd_pcm_drop+0x4a/0x7d [snd_pcm]
> [  182.274496]  [<f84351d9>] snd_pcm_common_ioctl1+0x7b0/0xcc4 [snd_pcm]
> [  182.274514]  [<f84357ce>] snd_pcm_playback_ioctl1+0xe1/0x3a8 [snd_pcm]
> [  182.274532]  [<f8435ab7>] snd_pcm_playback_ioctl+0x22/0x35 [snd_pcm]
> [  182.274549]  [<f8435a95>] ? snd_pcm_playback_ioctl1+0x3a8/0x3a8 [snd_pcm]
> [  182.274561]  [<c1171e82>] do_vfs_ioctl+0x306/0x576
> [  182.274573]  [<c117d3ca>] ? mntput_no_expire+0x61/0x1e7
> [  182.274583]  [<c117d377>] ? mntput_no_expire+0xe/0x1e7
> [  182.274594]  [<c117d56b>] ? mntput+0x1b/0x29
> [  182.274603]  [<c1161438>] ? __fput+0x144/0x1aa
> [  182.274614]  [<c1172147>] SyS_ioctl+0x55/0x75
> [  182.274624]  [<c14646e0>] sysenter_do_call+0x12/0x12
> 
> Regards,
> 
> Arthur.
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: 3.18.0-rc1 pulseaudio possible recursive locking
  2014-10-21  5:27 ` Takashi Iwai
@ 2014-10-21 13:38   ` Takashi Iwai
  2014-10-21 16:08     ` Arthur Marsh
  0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2014-10-21 13:38 UTC (permalink / raw)
  To: Arthur Marsh; +Cc: ALSA devel

At Tue, 21 Oct 2014 07:27:34 +0200,
Takashi Iwai wrote:
> 
> At Tue, 21 Oct 2014 00:30:59 +1030,
> Arthur Marsh wrote:
> > 
> > Hi, I have been seeing this a few times lately, and noticed that it was 
> > still present
> > 
> > Is this the right place to report it or should I be reporting a bug 
> > against pulseaudio?
> 
> This is likely a false-positive report, so ignore it unless you really
> encounter the deadlock by this.

Or try the patch below.  This seems hitting more often, so it's maybe
worth to put into 3.18-rc2.  Let me know if this solves the problem.


Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: pcm: Fix false lockdep warnings

As PCM core handles the multiple linked streams in parallel, lockdep
gets confused (partly because of weak annotations) and spews the
false-positive warnings.  This hasn't been a problem for long time but
the latest PCM lock path update seems to have woken up a sleeping
dog.

Here is an attempt to paper over this issue: pass the lock subclass
just calculated from the depth in snd_pcm_action_group().  Also, a
(possibly) wrong lock subclass set in snd_pcm_action_lock_mutex() is
dropped, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/core/pcm_native.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 815396d8427f..166d59cdc86b 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -781,16 +781,15 @@ static int snd_pcm_action_group(struct action_ops *ops,
 {
 	struct snd_pcm_substream *s = NULL;
 	struct snd_pcm_substream *s1;
-	int res = 0;
+	int res = 0, depth = 1;
 
 	snd_pcm_group_for_each_entry(s, substream) {
 		if (do_lock && s != substream) {
 			if (s->pcm->nonatomic)
-				mutex_lock_nested(&s->self_group.mutex,
-						  SINGLE_DEPTH_NESTING);
+				mutex_lock_nested(&s->self_group.mutex, depth);
 			else
-				spin_lock_nested(&s->self_group.lock,
-						 SINGLE_DEPTH_NESTING);
+				spin_lock_nested(&s->self_group.lock, depth);
+			depth++;
 		}
 		res = ops->pre_action(s, state);
 		if (res < 0)
@@ -906,8 +905,7 @@ static int snd_pcm_action_lock_mutex(struct action_ops *ops,
 	down_read(&snd_pcm_link_rwsem);
 	if (snd_pcm_stream_linked(substream)) {
 		mutex_lock(&substream->group->mutex);
-		mutex_lock_nested(&substream->self_group.mutex,
-				  SINGLE_DEPTH_NESTING);
+		mutex_lock(&substream->self_group.mutex);
 		res = snd_pcm_action_group(ops, substream, state, 1);
 		mutex_unlock(&substream->self_group.mutex);
 		mutex_unlock(&substream->group->mutex);
-- 
2.1.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: 3.18.0-rc1 pulseaudio possible recursive locking
  2014-10-21 13:38   ` Takashi Iwai
@ 2014-10-21 16:08     ` Arthur Marsh
  0 siblings, 0 replies; 4+ messages in thread
From: Arthur Marsh @ 2014-10-21 16:08 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: ALSA devel



Takashi Iwai wrote, on 22/10/14 00:08:
> At Tue, 21 Oct 2014 07:27:34 +0200,
> Takashi Iwai wrote:
>>
>> At Tue, 21 Oct 2014 00:30:59 +1030,
>> Arthur Marsh wrote:
>>>
>>> Hi, I have been seeing this a few times lately, and noticed that it was
>>> still present
>>>
>>> Is this the right place to report it or should I be reporting a bug
>>> against pulseaudio?
>>
>> This is likely a false-positive report, so ignore it unless you really
>> encounter the deadlock by this.
>
> Or try the patch below.  This seems hitting more often, so it's maybe
> worth to put into 3.18-rc2.  Let me know if this solves the problem.
>
>
> Takashi
>
> -- 8< --
> From: Takashi Iwai <tiwai@suse.de>
> Subject: [PATCH] ALSA: pcm: Fix false lockdep warnings
>
> As PCM core handles the multiple linked streams in parallel, lockdep
> gets confused (partly because of weak annotations) and spews the
> false-positive warnings.  This hasn't been a problem for long time but
> the latest PCM lock path update seems to have woken up a sleeping
> dog.
>
> Here is an attempt to paper over this issue: pass the lock subclass
> just calculated from the depth in snd_pcm_action_group().  Also, a
> (possibly) wrong lock subclass set in snd_pcm_action_lock_mutex() is
> dropped, too.
>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>   sound/core/pcm_native.c | 12 +++++-------
>   1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
> index 815396d8427f..166d59cdc86b 100644
> --- a/sound/core/pcm_native.c
> +++ b/sound/core/pcm_native.c
> @@ -781,16 +781,15 @@ static int snd_pcm_action_group(struct action_ops *ops,
>   {
>   	struct snd_pcm_substream *s = NULL;
>   	struct snd_pcm_substream *s1;
> -	int res = 0;
> +	int res = 0, depth = 1;
>
>   	snd_pcm_group_for_each_entry(s, substream) {
>   		if (do_lock && s != substream) {
>   			if (s->pcm->nonatomic)
> -				mutex_lock_nested(&s->self_group.mutex,
> -						  SINGLE_DEPTH_NESTING);
> +				mutex_lock_nested(&s->self_group.mutex, depth);
>   			else
> -				spin_lock_nested(&s->self_group.lock,
> -						 SINGLE_DEPTH_NESTING);
> +				spin_lock_nested(&s->self_group.lock, depth);
> +			depth++;
>   		}
>   		res = ops->pre_action(s, state);
>   		if (res < 0)
> @@ -906,8 +905,7 @@ static int snd_pcm_action_lock_mutex(struct action_ops *ops,
>   	down_read(&snd_pcm_link_rwsem);
>   	if (snd_pcm_stream_linked(substream)) {
>   		mutex_lock(&substream->group->mutex);
> -		mutex_lock_nested(&substream->self_group.mutex,
> -				  SINGLE_DEPTH_NESTING);
> +		mutex_lock(&substream->self_group.mutex);
>   		res = snd_pcm_action_group(ops, substream, state, 1);
>   		mutex_unlock(&substream->self_group.mutex);
>   		mutex_unlock(&substream->group->mutex);
>

Hi, I applied this patch, rebuilt the kernel and am running it now and 
have not seen the "pulseaudio possible recursive locking" message yet.

For the previous 4 reboots with earlier kernels 3.17.0+ / 3.18.0-rc1 I 
saw the "pulseaudio possible recursive locking" message appear about 5 
minutes after boot-up.

Thanks for your help!

Arthur.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-10-21 16:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-20 14:00 3.18.0-rc1 pulseaudio possible recursive locking Arthur Marsh
2014-10-21  5:27 ` Takashi Iwai
2014-10-21 13:38   ` Takashi Iwai
2014-10-21 16:08     ` Arthur Marsh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.