Skip to content

Commit 854f276

Browse files
Kuan-Ying Leeakpm00
authored andcommitted
scripts/gdb/tasks: fix lx-ps command error
Since commit 8e1f385 ("kill task_struct->thread_group") remove the thread_group, we will encounter below issue. (gdb) lx-ps TASK PID COMM 0xffff800086503340 0 swapper/0 Python Exception <class 'gdb.error'>: There is no member named thread_group. Error occurred in Python: There is no member named thread_group. We use signal->thread_head to iterate all threads instead. [Kuan-Ying.Lee@mediatek.com: v2] Link: https://lkml.kernel.org/r/20231129065142.13375-2-Kuan-Ying.Lee@mediatek.com Link: https://lkml.kernel.org/r/20231127070404.4192-2-Kuan-Ying.Lee@mediatek.com Fixes: 8e1f385 ("kill task_struct->thread_group") Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com> Acked-by: Oleg Nesterov <oleg@redhat.com> Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Cc: Chinwen Chang <chinwen.chang@mediatek.com> Cc: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com> Cc: Andrey Konovalov <andreyknvl@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 97219cc commit 854f276

1 file changed

Lines changed: 7 additions & 11 deletions

File tree

scripts/gdb/linux/tasks.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import gdb
1515

16-
from linux import utils
16+
from linux import utils, lists
1717

1818

1919
task_type = utils.CachedType("struct task_struct")
@@ -22,19 +22,15 @@
2222
def task_lists():
2323
task_ptr_type = task_type.get_type().pointer()
2424
init_task = gdb.parse_and_eval("init_task").address
25-
t = g = init_task
25+
t = init_task
2626

2727
while True:
28-
while True:
29-
yield t
28+
thread_head = t['signal']['thread_head']
29+
for thread in lists.list_for_each_entry(thread_head, task_ptr_type, 'thread_node'):
30+
yield thread
3031

31-
t = utils.container_of(t['thread_group']['next'],
32-
task_ptr_type, "thread_group")
33-
if t == g:
34-
break
35-
36-
t = g = utils.container_of(g['tasks']['next'],
37-
task_ptr_type, "tasks")
32+
t = utils.container_of(t['tasks']['next'],
33+
task_ptr_type, "tasks")
3834
if t == init_task:
3935
return
4036

0 commit comments

Comments
 (0)