public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* oom-killer causes lockups in cpuset_excl_nodes_overlap()
@ 2005-12-28  0:40 KUROSAWA Takahiro
  2005-12-31 13:23 ` Kirill Korotaev
  2006-01-03 21:34 ` Paul Jackson
  0 siblings, 2 replies; 3+ messages in thread
From: KUROSAWA Takahiro @ 2005-12-28  0:40 UTC (permalink / raw)
  To: linux-kernel

The oom-killer causes lockups because it calls
cpuset_excl_nodes_overlap() with tasklist_lock read-locked.
cpuset_excl_nodes_overlap() gets cpuset_sem (or callback_sem in
later linux versions) semaphore, which might_sleep even if the
semaphore could be down without sleeping.  If processes call
exit() or fork() when the oom-killer sleeps in the down(), they
lockup because they call write_lock_irq(&tasklist_lock).

The lockup occurred on linux-2.6.14.  The problem also seems to exist
in linux-2.6.15-rc5-mm3 and linux-2.6.15-rc7.

Regards,

-- 
KUROSAWA, Takahiro

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

* Re: oom-killer causes lockups in cpuset_excl_nodes_overlap()
  2005-12-28  0:40 oom-killer causes lockups in cpuset_excl_nodes_overlap() KUROSAWA Takahiro
@ 2005-12-31 13:23 ` Kirill Korotaev
  2006-01-03 21:34 ` Paul Jackson
  1 sibling, 0 replies; 3+ messages in thread
From: Kirill Korotaev @ 2005-12-31 13:23 UTC (permalink / raw)
  To: KUROSAWA Takahiro; +Cc: linux-kernel

yes, we found the same problem while looking at the code.
and this is not the only cpuset function which might sleep, but is 
called from atomic context... :(

> The oom-killer causes lockups because it calls
> cpuset_excl_nodes_overlap() with tasklist_lock read-locked.
> cpuset_excl_nodes_overlap() gets cpuset_sem (or callback_sem in
> later linux versions) semaphore, which might_sleep even if the
> semaphore could be down without sleeping.  If processes call
> exit() or fork() when the oom-killer sleeps in the down(), they
> lockup because they call write_lock_irq(&tasklist_lock).
> 
> The lockup occurred on linux-2.6.14.  The problem also seems to exist
> in linux-2.6.15-rc5-mm3 and linux-2.6.15-rc7.
> 
> Regards,
> 

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

* Re: oom-killer causes lockups in cpuset_excl_nodes_overlap()
  2005-12-28  0:40 oom-killer causes lockups in cpuset_excl_nodes_overlap() KUROSAWA Takahiro
  2005-12-31 13:23 ` Kirill Korotaev
@ 2006-01-03 21:34 ` Paul Jackson
  1 sibling, 0 replies; 3+ messages in thread
From: Paul Jackson @ 2006-01-03 21:34 UTC (permalink / raw)
  To: KUROSAWA Takahiro; +Cc: linux-kernel

KUROSAWA Takahiro wrote:
>
> The oom-killer causes lockups because it calls
> cpuset_excl_nodes_overlap() with tasklist_lock read-locked.
> cpuset_excl_nodes_overlap() gets cpuset_sem (or callback_sem in
> later linux versions) semaphore, which might_sleep even if the
> semaphore could be down without sleeping.

Thank-you for catching this.  My apologies for not responding sooner.
I was off the air for a week.  I will look at this now.

-- 
                  I won't rest till it's the best ...
                  Programmer, Linux Scalability
                  Paul Jackson <pj@sgi.com> 1.925.600.0401

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

end of thread, other threads:[~2006-01-03 21:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-28  0:40 oom-killer causes lockups in cpuset_excl_nodes_overlap() KUROSAWA Takahiro
2005-12-31 13:23 ` Kirill Korotaev
2006-01-03 21:34 ` Paul Jackson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox