Messages in this thread | | | Date | Wed, 21 May 2014 22:34:44 -0400 | From | Sasha Levin <> | Subject | Re: sched: spinlock recursion in migrate_swap_stop |
| |
On 05/21/2014 12:49 PM, Peter Zijlstra wrote: > On Wed, May 21, 2014 at 03:19:48PM +0200, Peter Zijlstra wrote: >> > On Wed, May 21, 2014 at 09:08:26AM -0400, Sasha Levin wrote: >>> > > +++ b/kernel/sched/core.c >>> > > @@ -1154,6 +1156,7 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p) >>> > > goto out; >>> > > >>> > > trace_sched_swap_numa(cur, arg.src_cpu, p, arg.dst_cpu); >>> > > + BUG_ON(cur == p); >>> > > ret = stop_two_cpus(arg.dst_cpu, arg.src_cpu, migrate_swap_stop, &arg); >>> > > >>> > > out: >>> > > >>> > > >>> > > Which seems to get hit. This sounds like a race with task moving to >>> > > other cpu maybe? >> > >> > Oi, good call that, lemme go stare. > I think something simple like this should be sufficient to avoid the > problem of selecting oneself as a flip target.
Why would that happen in the first place?
Thanks, Sasha
| |