Re: 2.6.18-rc2-mm1

Shailabh Nagar
2006-07-29T22:34:27Z

Matt Helsley wrote:
> On Fri, 2006-07-28 at 21:53 +0200, Michal Piotrowski wrote:
>
>>On 28/07/06, Matt Helsley <matthltc@us.ibm.com> wrote:
>>
>>>On Fri, 2006-07-28 at 01:34 -0700, Andrew Morton wrote:
>>>
>>>>On Fri, 28 Jul 2006 10:17:44 +0200
>>>>"Michal Piotrowski" <michal.k.k.piotrowski@gmail.com> wrote:
>>>>
>>>>
>>>>>Matt, can you look at this?
>>>>>
>>>>>My hunt file shows me, that this patches are causing oops.
>>>>>GOOD
>>>>>#
>>>>>#
>>>>>task-watchers-task-watchers.patch
>>>>>task-watchers-register-process-events-task-watcher.patch
>>>>>task-watchers-refactor-process-events.patch
>>>>>task-watchers-make-process-events-configurable-as.patch
>>>>>task-watchers-allow-task-watchers-to-block.patch
>>>>>task-watchers-register-audit-task-watcher.patch
>>>>>task-watchers-register-per-task-delay-accounting.patch
>>>>>task-watchers-register-profile-as-a-task-watcher.patch
>>>>>task-watchers-add-support-for-per-task-watchers.patch
>>>>>task-watchers-register-semundo-task-watcher.patch
>>>>>task-watchers-register-per-task-semundo-watcher.patch
>>>>>BAD
>>>>
>>>>Thanks for working that out.
>>>
>>> I noticed the delay accounting functions in the stack trace. Perhaps
>>>task-watchers-register-per-task-delay-accounting.patch is causing the
>>>problem.
>>
>>Confirmed.
>
>
> Excellent, thanks for the rapid confirmation. I'll work with Shailabh
> and Balbir to fix this. In the meantime perhaps
> task-watchers-register-per-task-delay-accounting.patch should be dropped
> from -mm.
>
> Cheers,
> -Matt Helsley
>

The error is almost certainly because delayacct_tsk_init is being
called at WATCH_TASK_CLONE (which is triggered after the task has been
added to the tasklist) rather than WATCH_INIT (before).

__delayacct_tsk_init, which gets notified by WATCH_TASK_* initializes
the spinlock tsk->delays_lock which could get used as soon as task is
present in tasklist. The lockup is very likely due to use of this
uninitialized spinlock.

So the fix should be to change WATCH_TASK_CLONE to WATCH_TASK_INIT
in the delayacct_watch_task function created by this patch.

--Shailabh