By using functions like prctl, or pthread_set_name_np it's possible to change the name of a thread. The limit both functions imposes, at least in Linux 2.6.38, is that the name cannot be longer than 15 characters (NULL termination being the 16th byte).
Where is this 15 character limit imposed, and is there any (even unorthodox) way around it?
Update:
As mentioned in the comments, this is imposed by the kernel.
The definition can be found here: http://lxr.linux.no/linux+v2.6.37/include/linux/sched.h#L245
The pthread_setname_np() function can be used to set a unique name for a thread, which can be useful for debugging multithreaded applications. The thread name is a meaningful C language string, whose length is restricted to 16 characters, including the terminating null byte ('\0').
By default, each thread has a name, i.e. thread-0, thread-1 and so on. By we can change the name of the thread by using the setName() method.
The pthread_getname_np() function retrieves the name of the thread. The buffer specified by name must be at least 16 characters in length. The returned thread name will be null terminated in the output buffer. By default, each thread is unnamed.
15-char limit is enforced by the kernel:
struct task_struct::comm[TASK_COMM_LEN]
which is 16-byte wide.
You have to recompile the kernel if you want to increase that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With