* 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