On Tue, Mar 18, 2025 at 04:49:28PM +0530, Bhupesh Sharma wrote:Sure.
On 3/15/25 1:13 PM, Andres Rodriguez wrote:I don't want to add this to all processes at exec time as the existing
On 3/14/25 14:25, Kees Cook wrote:So, basically my approach _does not_ touch TASK_COMM_LEN at all. The normal
On Fri, Mar 14, 2025 at 10:57:13AM +0530, Bhupesh wrote:Completely agree that comm is best left untouched. TASK_COMM_LEN is
While working with user-space debugging tools which work especiallySo there have been long discussions about "comm", and it mainly boils
on linux gaming platforms, I found that the task name is truncated due
to the limitation of TASK_COMM_LEN.
For example, currently running 'ps', the task->comm value of a long
task name is truncated due to the limitation of TASK_COMM_LEN.
create_very_lon
This leads to the names passed from userland via pthread_setname_np()
being truncated.
down to "leave it alone". For the /proc-scraping tools like "ps" and
"top", they check both "comm" and "cmdline", depending on mode. The more
useful (and already untruncated) stuff is in "cmdline", so I suspect it
may make more sense to have pthread_setname_np() interact with that
instead. Also TASK_COMM_LEN is basically considered userspace ABI at
this point and we can't sanely change its length without breaking the
world.
embedded into the kernel and the pthread ABI changes here should be
avoided.
'TASK_COMM_LEN' 16byte design remains untouched.
Which means that all the legacy / existing ABi which uses 'task->comm' and
hence are designed / written to handle 'TASK_COMM_LEN' 16-byte name,
continue to work as before using '/proc/$pid/task/$tid/comm'.
This change-set only adds a _parallel_ dynamically allocated
'task->full_name' which can be used by interested users via
'/proc/$pid/task/$tid/full_name'.
solution works for those processes: read /proc/$pid/cmdline.
That said, adding another pointer to task_struct isn't to bad I guess,
and it could be updated by later calls. Maybe by default it just points
to "comm".
Got it. Ok, let me rework the series so that we have a unified 'full_name' inside 'task_struct' and have kthread use it as well.
I am fine with adding either '/proc/$pid/task/$tid/full_name' orIf we do this for task_struct, we should remove "full_name" from kthread
'/proc/$pid/task/$tid/debug_name' (actually both of these achieve the same).
The new / modified users (especially the debug applications you listed
above) can switch easily to using '/proc/$pid/task/$tid/full_name' instead
of ''/proc/$pid/task/$tid/comm'
AFAIK we already achieved for the kthreads using d6986ce24fc00 ("kthread:
dynamically allocate memory to store kthread's full name"), which adds
'full_name' in parallel to 'comm' for kthread names.
and generalize it for all processes.