[PATCH 0/4] Restartable Sequences support for glibc 2.30

Carlos O'Donell codonell@redhat.com
Fri Mar 22 19:46:00 GMT 2019


On 3/22/19 1:51 PM, Florian Weimer wrote:
> * Carlos O'Donell:
> 
>> On 3/22/19 1:39 PM, Florian Weimer wrote:
>>> * Mathieu Desnoyers:
>>>
>>>> The only point that still appears to not reach concensus is whether it's
>>>> acceptable to define the RSEQ_SIG code signature for each architecture.
>>>> If I missed other points that failed to reach concensus, please let me
>>>> know!
>>>
>>> I still think the registration mechanism is very problematic and
>>> should be avoided.
>>
>> The *entire* registration mechanism?
> 
> The reference-counting part.  It's going to be of limited use, for a
> few years at most, and we'll have to carry it forward indefinitely.
> I don't think it's worth the complexity.

I can understand Mathieu's position here, he wants to enable all
kinds of users, and wants to write libraries that use rseq today
but which work with future glibc. This is a perfectly reasonable
thing to want. The question we have to ask is the cost.

My suggestion is as follows, tell me what you think:

(a) Add a RSEQ_REGISTER_ALWAYS. The meaning of which is that the
     core C library does unconditional registration/unregistration
     for all threads, and that your application must not call
     rseq with flags 0 (register)/RSEQ_FLAG_UNREGISTER.

(b) In a few years we remove all the ref count code and define
     a __rseq_lib_abi with a register_state that is set to
     a constant value of RSEQ_REGISTER_ALWAYS, and do nothing else.

This way we have a way to backout the ref count process and just
leave a public data symbol as the only part of the ABI.

My idea is that we just need one more RSEQ_REGISTER_* value to
indicate that libc has taken over unconditional registration.

Thoughts?

-- 
Cheers,
Carlos.



More information about the Libc-alpha mailing list