From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Ingo Molnar <mingo@elte.hu>, "Rafael J. Wysocki" <rjw@sisk.pl>,
Christian Kujau <lists@nerdbynature.de>,
linux-kernel@vger.kernel.org,
jfs-discussion@lists.sourceforge.net,
Davide Libenzi <davidel@xmailserver.org>,
Johannes Berg <johannes@sipsolutions.net>,
Oleg Nesterov <oleg@tv-sign.ru>
Subject: Re: 2.6.24-rc6: possible recursive locking detected
Date: Sat, 05 Jan 2008 18:01:16 +0100 [thread overview]
Message-ID: <1199552476.31975.45.camel@lappy> (raw)
In-Reply-To: <1199552016.31975.41.camel@lappy>
On Sat, 2008-01-05 at 17:53 +0100, Peter Zijlstra wrote:
> On Sat, 2008-01-05 at 18:12 +1100, Herbert Xu wrote:
> > On Fri, Jan 04, 2008 at 09:30:49AM +0100, Ingo Molnar wrote:
> > >
> > > > > [ 1310.670986] =============================================
> > > > > [ 1310.671690] [ INFO: possible recursive locking detected ]
> > > > > [ 1310.672097] 2.6.24-rc6 #1
> > > > > [ 1310.672421] ---------------------------------------------
> > > > > [ 1310.672828] FahCore_a0.exe/3692 is trying to acquire lock:
> > > > > [ 1310.673238] (&q->lock){++..}, at: [<c011544b>] __wake_up+0x1b/0x50
> > > > > [ 1310.673869]
> > > > > [ 1310.673870] but task is already holding lock:
> > > > > [ 1310.674567] (&q->lock){++..}, at: [<c011544b>] __wake_up+0x1b/0x50
> > > > > [ 1310.675267]
> > > > > [ 1310.675268] other info that might help us debug this:
> > > > > [ 1310.675952] 5 locks held by FahCore_a0.exe/3692:
> > > > > [ 1310.676334] #0: (rcu_read_lock){..--}, at: [<c038b620>] net_rx_action+0x60/0x1b0
> > > > > [ 1310.677251] #1: (rcu_read_lock){..--}, at: [<c0388d60>] netif_receive_skb+0x100/0x470
> > > > > [ 1310.677924] #2: (rcu_read_lock){..--}, at: [<c03a7fb2>] ip_local_deliver_finish+0x32/0x210
> > > > > [ 1310.678460] #3: (clock-AF_INET){-.-?}, at: [<c038164e>] sock_def_readable+0x1e/0x80
> > > > > [ 1310.679250] #4: (&q->lock){++..}, at: [<c011544b>] __wake_up+0x1b/0x50
> >
> > The net part might just be a red herring, since the problem is that
> > __wake_up is somehow reentering itself.
>
> /*
> * Perform a safe wake up of the poll wait list. The problem is that
> * with the new callback'd wake up system, it is possible that the
> * poll callback is reentered from inside the call to wake_up() done
> * on the poll wait queue head. The rule is that we cannot reenter the
> * wake up code from the same task more than EP_MAX_POLLWAKE_NESTS times,
> * and we cannot reenter the same wait queue head at all. This will
> * enable to have a hierarchy of epoll file descriptor of no more than
> * EP_MAX_POLLWAKE_NESTS deep. We need the irq version of the spin lock
> * because this one gets called by the poll callback, that in turn is called
> * from inside a wake_up(), that might be called from irq context.
> */
>
> Seems to suggest that the epoll code can indeed recurse into wakeup.
>
> Davide, Johannes, any ideas?
Since EP_MAX_POLLWAKE_NESTS < MAX_LOCKDEP_SUBCLASSES we could perhaps do
something like:
wake_up_nested(..., wake_nests);
although I'm not quite sure that is correct, my understanding of this
code is still fragile at best.
next prev parent reply other threads:[~2008-01-05 17:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-03 22:58 2.6.24-rc6: possible recursive locking detected Christian Kujau
2008-01-03 23:06 ` Rafael J. Wysocki
2008-01-04 8:30 ` Ingo Molnar
2008-01-05 7:12 ` Herbert Xu
2008-01-05 16:53 ` Peter Zijlstra
2008-01-05 17:01 ` Peter Zijlstra [this message]
2008-01-05 21:35 ` Davide Libenzi
2008-01-06 0:20 ` Christian Kujau
2008-01-07 21:35 ` Davide Libenzi
2008-01-06 21:44 ` Cyrill Gorcunov
2008-01-06 21:53 ` Cyrill Gorcunov
2008-01-07 17:22 ` Oleg Nesterov
2008-01-07 17:49 ` Oleg Nesterov
2008-01-13 16:32 ` Peter Zijlstra
2008-01-14 21:27 ` Oleg Nesterov
2008-01-30 10:34 ` hrtimers and lockdep (was: Re: 2.6.24-rc6: possible recursive locking detected) Peter Zijlstra
2008-01-30 17:36 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1199552476.31975.45.camel@lappy \
--to=a.p.zijlstra@chello.nl \
--cc=davidel@xmailserver.org \
--cc=herbert@gondor.apana.org.au \
--cc=jfs-discussion@lists.sourceforge.net \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lists@nerdbynature.de \
--cc=mingo@elte.hu \
--cc=oleg@tv-sign.ru \
--cc=rjw@sisk.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.