Bug 582237 - "hung_task" feature port is incomplete
Summary: "hung_task" feature port is incomplete
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel
Version: 5.5
Hardware: All
OS: Linux
low
medium
Target Milestone: rc
: ---
Assignee: Jerome Marchand
QA Contact: Hangbin Liu
URL:
Whiteboard:
: 586237 (view as bug list)
Depends On:
Blocks: 586237
TreeView+ depends on / blocked
 
Reported: 2010-04-14 13:15 UTC by Konstantin Khorenko
Modified: 2011-01-13 21:26 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
: 586237 (view as bug list)
Environment:
Last Closed: 2011-01-13 21:26:50 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2011:0017 0 normal SHIPPED_LIVE Important: Red Hat Enterprise Linux 5.6 kernel security and bug fix update 2011-01-13 10:37:42 UTC

Description Konstantin Khorenko 2010-04-14 13:15:40 UTC
Pavel Emelyanov from Parallels Virtuozzo Containers team has found that 2.6.18-194.el5 kernel has a new feature "hung_task" backported from mainstream.
Unfortunately there is some important piece of code is missing:

The bad thing is that the following piece of code (marked with >>>-s) in the check_hung_uninterruptible_tasks() routine was lost:

        do_each_thread(g, t) {
                if (!max_count--)
                        goto unlock;
                if (!--batch_count) {
                        batch_count = HUNG_TASK_BATCHING;
                        rcu_lock_break(g, t);
>>> >>>                     /* Exit if t or g was unhashed during refresh. */
>>> >>>                     if (t->state == TASK_DEAD || g->state == TASK_DEAD)
>>> >>>                             goto unlock;
                }
                /* use "==" to skip the TASK_KILLABLE tasks waiting on NFS */
                if (t->state == TASK_UNINTERRUPTIBLE)
                        check_hung_task(t, timeout);
        } while_each_thread(g, t);


This code is required, since in case t or g goes dead the lists being scanned are no longer self-consistent.

Please, recheck and add the code.

Comment 1 Linda Wang 2010-04-27 06:35:26 UTC
*** Bug 586237 has been marked as a duplicate of this bug. ***

Comment 4 Jarod Wilson 2010-08-11 00:12:19 UTC
in kernel-2.6.18-211.el5
You can download this test kernel from http://people.redhat.com/jwilson/el5

Detailed testing feedback is always welcomed.

Comment 8 errata-xmlrpc 2011-01-13 21:26:50 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2011-0017.html


Note You need to log in before you can comment on or make changes to this bug.