public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: Re: Caching of PID/TID after fork
Date: Thu, 06 Oct 2016 18:32:00 -0000	[thread overview]
Message-ID: <178a59d3-9fed-9235-b933-1064fc454cc8@linaro.org> (raw)
In-Reply-To: <CAP145pivK3gmtZ0oTz0E6RcC52e++ARPj7wjACqFo7xHezmDew@mail.gmail.com>

Besides the clone(CLONE_VM) issues, another one related to pid/tid
caching was BZ#15368 [1].

The problem of providing a clone syscal that do not cache pid/tid
is current mutex, rwlocks, and some other implementations
(pthread_clock_gettime, etc.) relies on correct pid/tid information.
So if it is a potential source of issues if the exported clone
do not provide the correct semantics.  

Also, providing a glibc own symbol to update the tid/pid is messy:
it would be an internal implementation detail which in theory 
application should not have access to, it might add some 
synchronization issues (what happens if you try to force update 
after a mutex operation with default wrong value?), and it also 
might be tricky to add a compatibility symbol in case of change 
how tid/pid internally works.

Another possible solution was to get rid of the caching entirely,
but it might incur in some performance issues (each tid/pid get 
will trigger another syscall).  We can minimize the performance
issue by adding a vdso implementation of getpid/gettid, but some
architectures and configuration will still not benefit from it
(also, afaik current x86 kernel do not provide getpid/gettid
as vsyscall neither as vdso and recall that for glibc we
deprecated vsyscall use).

Another possibility is to use another thread unique identifier 
as the owner instead of tid (maybe a hash of pthread_t
to fit on a int).  By removing this requirement I think it is
feasible to get rid of caching.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=15368

On 06/10/2016 14:03, Robert Święcki wrote:
> 3. Provide clone() wrapper, which doesn't impose additional
> restrictions over kernel's __NR_clone and which updates the TID/PID
> cache.
> 
> 2016-10-06 18:33 GMT+02:00 Paul Pluzhnikov <ppluzhnikov@google.com>:
>> On Thu, Oct 6, 2016 at 9:13 AM, Robert Święcki <robert@swiecki.net> wrote:
>>
>>> This has probably been debated a lot of times in the past, but...
>>
>> We should probably mention that caching of PID has caused bugs in the past, e.g.
>> https://sourceware.org/bugzilla/show_bug.cgi?id=19957
>> https://sourceware.org/ml/libc-alpha/2006-07/msg00123.html
>>
>> There is also
>> http://www.eglibc.org/archives/issues/msg00061.html
>> http://yarchive.net/comp/linux/getpid_caching.html
>>
>> --
>> Paul Pluzhnikov
> 
> 
> 

  reply	other threads:[~2016-10-06 18:32 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-06 16:13 Robert Święcki
2016-10-06 16:34 ` Paul Pluzhnikov
2016-10-06 17:03   ` Robert Święcki
2016-10-06 18:32     ` Adhemerval Zanella [this message]
2016-10-06 17:26 ` Rich Felker
2016-10-06 17:42   ` Robert Święcki
2016-10-06 18:05     ` Rich Felker
2016-10-06 18:26       ` Robert Święcki
2016-10-06 21:35         ` Robert Święcki
2016-10-07  0:42           ` Zack Weinberg
2016-10-07  0:43             ` Zack Weinberg
2016-10-07 14:44               ` Robert Święcki
2016-10-07 18:20                 ` Adhemerval Zanella
2016-10-07 18:30               ` Adhemerval Zanella
2016-10-07 19:38 ` Florian Weimer
2016-10-07 21:23   ` Robert Święcki
2016-10-09 10:05     ` Florian Weimer
2016-10-09 14:19       ` Robert Święcki
2016-10-10 18:03         ` Adhemerval Zanella
2016-11-04 15:14           ` Florian Weimer
2016-11-04 16:03             ` Adhemerval Zanella
2016-11-07 16:04               ` Florian Weimer

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=178a59d3-9fed-9235-b933-1064fc454cc8@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).