* 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.