• Asad Sajjad Ahmed's avatar
    varnishd: truncate thread name on Linux · 1a79fde3
    Asad Sajjad Ahmed authored
    On Linux, threads can not have name longer than 15 bytes plus a terminating
    '\0' byte:
    > PR_SET_NAME (since Linux 2.6.9)
    >     Set the name of the calling thread, using the value in the loca‐
    >     tion  pointed  to  by  (char  *) arg2.  The name can be up to 16
    >     bytes long, including the terminating null byte.  (If the length
    >     of  the  string, including the terminating null byte, exceeds 16
    >     bytes, the string is silently truncated.)  This is the same  at‐
    >     tribute  that can be set via pthread_setname_np(3) and retrieved
    >     using pthread_getname_np(3).  The attribute is likewise accessi‐
    >     ble via /proc/self/task/tid/comm (see proc(5)), where tid is the
    >     thread ID of the calling thread, as returned by gettid(2).
    
    We have until now ignored the return value from pthread_setname_np(), this
    is not great as the call then becomes a NOP:
    > The pthread_setname_np() function can be used to  set  a
    >     unique  name  for  a  thread,  which can be useful for debugging multi‐
    >     threaded applications.  The thread name  is  a  meaningful  C  language
    >     string, whose length is restricted to 16 characters, including the ter‐
    >     minating null byte ('\0').
    > [...]
    >     ERANGE The  length  of  the string specified pointed to by name exceeds
    >         the allowed limit.
    
    This patch truncates long names to 14 characters plus a tilde ('~') character.
    Signed-off-by: 's avatarAsad Sajjad Ahmed <asadsa@varnish-software.com>
    1a79fde3
Name
Last commit
Last update
.circleci Loading commit data...
.github Loading commit data...
bin Loading commit data...
contrib Loading commit data...
doc Loading commit data...
etc Loading commit data...
include Loading commit data...
lib Loading commit data...
m4 Loading commit data...
man Loading commit data...
tools Loading commit data...
vmod Loading commit data...
.dir-locals.el Loading commit data...
.editorconfig Loading commit data...
.gitignore Loading commit data...
.lgtm.yml Loading commit data...
.syntastic_c_config Loading commit data...
CONTRIBUTING Loading commit data...
ChangeLog Loading commit data...
INSTALL Loading commit data...
LICENSE Loading commit data...
Makefile.am Loading commit data...
README.Packaging Loading commit data...
README.rst Loading commit data...
autogen.des Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
flint.lnt Loading commit data...
varnish-legacy.m4 Loading commit data...
varnish.m4 Loading commit data...
varnishapi-uninstalled.pc.in Loading commit data...
varnishapi.pc.in Loading commit data...
vsc.am Loading commit data...
vtc.am Loading commit data...
wflags.py Loading commit data...