From: Lance Yang <lance.yang@linux.dev>
To: ruipengqi3@gmail.com
Cc: akpm@linux-foundation.org, peterz@infradead.org,
bigeasy@linutronix.de, mhiramat@kernel.org, pmladek@suse.com,
mingo@redhat.com, will@kernel.org, boqun@kernel.org,
longman@redhat.com, clrkwllms@kernel.org, rostedt@goodmis.org,
linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev,
Lance Yang <lance.yang@linux.dev>
Subject: Re: [PATCH v2 0/2] hung_task: show the blocker task if the task is hung on rtmutex
Date: Sat, 8 Aug 2026 23:34:16 +0800 [thread overview]
Message-ID: <20260808153416.49698-1-lance.yang@linux.dev> (raw)
In-Reply-To: <cover.1786193045.git.ruipengqi3@gmail.com>
Hi Ruipeng,
Guess I'll have to be the bad guy here ...
Already raised this in v1 [1], but never got an answer ...
This touches locking too, and Peter has already made it pretty clear he
doesn't want this kind of debug code there.
Please don't send another version unless Peter is on board. Otherwise,
just spinning wheels ...
[1] https://lore.kernel.org/all/138ba5ec-41a1-4fe3-851a-51dbb866afae@linux.dev/
Thanks, Lance
On Sat, Aug 08, 2026 at 09:02:16PM +0800, ruipengqi wrote:
>From: Ruipeng Qi <ruipengqi3@gmail.com>
>
>Currently, debug_show_blocker() only tracks mutex, semaphore and rwsem
>lock types. Extend it to also cover rtmutex or rt_mutex-based lock
>implementations on PREEMPT_RT, so that when a task is hung on an
>rtmutex, the hung task detector can identify and report which task holds
>the lock.
>
>Add rt_mutex_task_owner() to get the task's lock owner when a task is
>blocked by an rtmutex-based lock implementation.
>
>Since the LSBs of task->blocker pointer are already fully utilized and
>leave no room for new blocker types, this version avoids adding a new
>blocker type by directly leveraging rt_mutex_task_owner() to retrieve
>the lock owner information.
>
>With this change, the hung task detector can now show blocker task's
>info like below:
>
>[ 3000.899985] INFO: task cat:195 blocked for more than 120 seconds.
>[ 3000.900561] Not tainted 7.2.0-rc4-00366-gf339a6eb59f3-dirty #22
>[ 3000.900930] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
>[ 3000.901376] task:cat state:D stack:13784 pid:195 tgid:195 ppid:1 task_flags:0x400000 flags:0x00080000
>[ 3000.902081] Call Trace:
>[ 3000.902233] <TASK>
>[ 3000.902383] __schedule+0x514/0xf50
>[ 3000.902677] rt_mutex_schedule+0x1b/0x30
>[ 3000.902916] rt_mutex_slowlock_block.constprop.0+0x3b/0x1c0
>[ 3000.903242] __rt_mutex_slowlock_locked.constprop.0+0xa8/0x200
>[ 3000.903716] rt_mutex_slowlock.constprop.0+0x48/0xb0
>[ 3000.904023] rt_mutex_lock+0x32/0x40
>[ 3000.904249] read_dummy_rtmutex+0x2a/0x60 [hung_task_tests]
>[ 3000.904647] full_proxy_read+0x5b/0x90
>[ 3000.904843] vfs_read+0xb0/0x370
>[ 3000.905051] ? vm_mmap_pgoff+0xf1/0x1b0
>[ 3000.905293] ? vm_mmap_pgoff+0x122/0x1b0
>[ 3000.905684] ksys_read+0x68/0xe0
>[ 3000.905980] do_syscall_64+0xf9/0x540
>[ 3000.906213] entry_SYSCALL_64_after_hwframe+0x77/0x7f
>[ 3000.906643] RIP: 0033:0x49a182
>[ 3000.906844] RSP: 002b:00007ffc431f6528 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
>[ 3000.907251] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000049a182
>[ 3000.907673] RDX: 0000000000010000 RSI: 00007f69b2166000 RDI: 0000000000000003
>[ 3000.908044] RBP: 00007f69b2166000 R08: 00000000ffffffff R09: 0000000000000000
>[ 3000.908485] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000010000
>[ 3000.908816] R13: 0000000000000003 R14: 0000000000000001 R15: 0000000001000000
>[ 3000.909206] </TASK>
>[ 3000.909351] INFO: task cat:195 is blocked on a rtmutex likely owned by task cat:194.
>[ 3000.909832] task:cat state:S stack:13784 pid:194 tgid:194 ppid:1 task_flags:0x400000 flags:0x00080000
>[ 3000.910426] Call Trace:
>[ 3000.910618] <TASK>
>[ 3000.910727] __schedule+0x514/0xf50
>[ 3000.910912] schedule+0x22/0xa0
>[ 3000.911064] schedule_timeout+0x81/0x100
>[ 3000.911254] ? __pfx_process_timeout+0x10/0x10
>[ 3000.911522] msleep_interruptible+0x28/0x50
>[ 3000.911754] read_dummy_rtmutex+0x34/0x60 [hung_task_tests]
>[ 3000.912019] full_proxy_read+0x5b/0x90
>[ 3000.912212] vfs_read+0xb0/0x370
>[ 3000.912378] ? vm_mmap_pgoff+0xf1/0x1b0
>[ 3000.912630] ? vm_mmap_pgoff+0x122/0x1b0
>[ 3000.912839] ksys_read+0x68/0xe0
>[ 3000.913007] do_syscall_64+0xf9/0x540
>[ 3000.913187] entry_SYSCALL_64_after_hwframe+0x77/0x7f
>[ 3000.913461] RIP: 0033:0x49a182
>[ 3000.913618] RSP: 002b:00007ffd0b4cf048 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
>[ 3000.913972] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000049a182
>[ 3000.914294] RDX: 0000000000010000 RSI: 00007fbf49a0d000 RDI: 0000000000000003
>[ 3000.914648] RBP: 00007fbf49a0d000 R08: 00000000ffffffff R09: 0000000000000000
>[ 3000.914955] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000010000
>[ 3000.915208] R13: 0000000000000003 R14: 0000000000000001 R15: 0000000001000000
>[ 3000.915439] </TASK>
>
>---
>v2 changes:
> - Reduce #ifdef-ery by using rt_mutex_task_owner() instead of adding a new blocker type,
> suggested by Petr.
> - Remove the unused function debug_trace_blocker(), suggested by Xusheng.
> - Clean up and update relevant comments.
> - https://lore.kernel.org/all/cover.1785376929.git.ruipengqi3@gmail.com/
>
>Ruipeng Qi (2):
> hung_task: show the blocker task if the task is hung on rtmutex
> samples: enhance hung_task detector test with rtmutex support
>
> include/linux/rtmutex.h | 2 ++
> kernel/hung_task.c | 26 +++++++++++++--
> kernel/locking/rtmutex_api.c | 29 +++++++++++++++++
> lib/Kconfig.debug | 1 -
> samples/Kconfig | 2 +-
> samples/hung_task/hung_task_tests.c | 50 ++++++++++++++++++++++++++---
> 6 files changed, 101 insertions(+), 9 deletions(-)
>
>--
>2.25.1
>
>
prev parent reply other threads:[~2026-08-08 15:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-08 13:02 [PATCH v2 0/2] hung_task: show the blocker task if the task is hung on rtmutex ruipengqi
2026-08-08 13:02 ` [PATCH v2 1/2] " ruipengqi
2026-08-08 13:02 ` [PATCH v2 2/2] samples: enhance hung_task detector test with rtmutex support ruipengqi
2026-08-08 13:21 ` sashiko-bot
2026-08-08 15:34 ` Lance Yang [this message]
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=20260808153416.49698-1-lance.yang@linux.dev \
--to=lance.yang@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=boqun@kernel.org \
--cc=clrkwllms@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-devel@lists.linux.dev \
--cc=longman@redhat.com \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=ruipengqi3@gmail.com \
--cc=will@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox