* Mathieu Desnoyers: >>>> I don't think you need unregistering if the memory is initial-exec TLS >>>> memory. Initial-exec TLS memory is tied directly to the TCB and cannot >>>> be freed while the thread is running, so it should be safe to put the >>>> rseq area there even if glibc knows nothing about it. >>> >>> Is it true for user-supplied stacks as well ? >> >> I'm not entirely sure because the glibc terminology is confusing, but I >> think it places intial-exec TLS into the static TLS area (so that it has >> a fixed offset from the TCB). The static TLS area is placed on the >> user-supplied stack. > > You said earlier in the email thread that user-supplied stack can be > reclaimed by __free_tcb () while the thread still runs, am I correct ? > If so, then we really want to unregister the rseq TLS before that. No, dynamic TLS can be reclaimed. Static TLS (which I assume includes initial-exec TLS) is not deallocated. > I notice that __free_tcb () calls __deallocate_stack (), which invokes > _dl_deallocate_tls (). Accessing the TLS from the kernel upon preemption > would appear fragile after this call. _dl_deallocate_tls only covers dynamic TLS. Thanks, Florian