This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] Fix quick_exit to match C++11 specification.
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>, Florian Weimer <fweimer at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Cc: Johan Karlsson <johan dot karlsson at enea dot com>
- Date: Tue, 7 Jun 2016 09:17:37 -0400
- Subject: Re: [PATCH] Fix quick_exit to match C++11 specification.
- Authentication-results: sourceware.org; auth=none
- References: <5751B292 dot 40109 at redhat dot com> <383b6001-e2ef-635a-4240-aa7fba826de3 at redhat dot com> <57525107 dot 5060500 at redhat dot com> <1c6e298e-ae7c-7e7a-d271-dfb75e874a04 at redhat dot com> <575613DA dot 3070209 at redhat dot com> <99119374-6dc7-42c2-451c-b4be759b7cc2 at redhat dot com> <57567CCE dot 2080207 at redhat dot com> <e0755a7a-f83a-423c-be4c-de7ba8e63c5c at redhat dot com> <57569A37 dot 3030002 at redhat dot com> <5756B7DC dot 4030805 at linaro dot org>
On 06/07/2016 08:02 AM, Adhemerval Zanella wrote:
> On 07/06/2016 06:56, Carlos O'Donell wrote:
>> On 06/07/2016 05:27 AM, Florian Weimer wrote:
>>> On 06/07/2016 09:50 AM, Carlos O'Donell wrote:
>>>>> I put âcorrectâ in scare quotes because I'm not convinced that we'd
>>>>> need a compat symbol at all for this (but if we do, it probably
>>>>> should be put on the registration, storing a flag along with callback
>>>>> registration data).
>>>> What do we gain by this?
>>> I don't think it matters. I think the compat symbol is overkill.
>> That is a fine opinion to have.
>> Thanks for being open to explaining your position.
> I also do not see compelling reason to provide a compat symbol this
> specific issue. The destruction handles are registered only with
> __cxa_thread_atexit_impl and it is used only for thread_local on
> C++. And C++ definition on quick_exit stated that it does not
> run the TLS destructors, so a program that relies on it is just
> expecting a non-conforming implementation behaviour.
The problem is that we've had a quick_exit that runs thread local
destructors since glibc 2.10 (2009), so that means 7 years of applications
having the wrong behaviour, testing with the wrong behaviour, and maybe
even relying on the wrong behaviour to shutdown certain objects in the
event of a quick_exit call.
Therefore to be conservative I versioned the interface for those old
binaries. It feels a bit like overkill, but I also think we've been a bit
cavalier lately and should version more often.