From: Gregory Haskins <ghaskins@novell.com>
To: Gilles Carry <gilles.carry@bull.net>
Cc: linux-rt-users@vger.kernel.org, rostedt@goodmis.org,
tinytim@us.ibm.com, jean-pierre.dion@bull.net,
sebastien.dugue@bull.net
Subject: Re: [PATCH][RT] Fix pushable_tasks list corruption
Date: Thu, 02 Oct 2008 08:35:54 -0400 [thread overview]
Message-ID: <48E4C02A.4020406@novell.com> (raw)
In-Reply-To: <1222945573-29082-1-git-send-email-gilles.carry@bull.net>
[-- Attachment #1: Type: text/plain, Size: 1598 bytes --]
Hi Gilles
Gilles Carry wrote:
> From: gilles.carry <gilles.carry@bull.net>
>
> Symptoms:
> System hang (endless loop in plist_check_list) or BUG because
> of faulty prev/next pointers in pushable_task node.
>
>
> When push_rt_task successes finding a task to push away, it
> performs a double lock on the runqueues (local and target) but
> before getting both locks, it releases the local rq lock letting
> other cpus grab the task in between. (eg. pull_rt_task, timers...)
> When push_rt_task calls deactivate_task (which calls
> dequeue_pushable_task) the task may have already been removed
> from the pushable_tasks list by another cpu.
> Removing the node again corrupts the list.
>
Hmm, I was looking at this same area of the code earlier this week.
The problem with your assessment is that find_lock_lowest_rq() already
accounts for the dropped-lock-migration and will return NULL if the task
was moved in the interim. I suppose there could be some weird
circumstance where the task is moved away, and then moved back, but even
so plist_del() is supposed to be idempotent, so I dont see why an extra
dequeue_pushable itself would be a problem.
At this point I don't really *love* your patch because it seems to just
be plastering over the problem that the list is corrupted. I do
appreciate that you are looking at this problem, however! So thank you
for that and please keep it up.
I am on vacation every thursday+friday for a while, so I will not be
responsive until Monday. Ill catch up with you guys then. Have a good
weekend.
-Greg
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
next prev parent reply other threads:[~2008-10-02 12:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-02 11:06 [PATCH][RT] Fix pushable_tasks list corruption Gilles Carry
2008-10-02 12:35 ` Gregory Haskins [this message]
2008-10-02 14:45 ` Gilles Carry
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=48E4C02A.4020406@novell.com \
--to=ghaskins@novell.com \
--cc=gilles.carry@bull.net \
--cc=jean-pierre.dion@bull.net \
--cc=linux-rt-users@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=sebastien.dugue@bull.net \
--cc=tinytim@us.ibm.com \
/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.