diff options
Diffstat (limited to 'src/env')
-rw-r--r-- | src/env/__init_tls.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/env/__init_tls.c b/src/env/__init_tls.c index 842886f6..f1874f2a 100644 --- a/src/env/__init_tls.c +++ b/src/env/__init_tls.c @@ -8,6 +8,8 @@ #include "atomic.h" #include "syscall.h" +volatile int __thread_list_lock; + int __init_tp(void *p) { pthread_t td = p; @@ -16,9 +18,10 @@ int __init_tp(void *p) if (r < 0) return -1; if (!r) libc.can_do_threads = 1; td->detach_state = DT_JOINABLE; - td->tid = __syscall(SYS_set_tid_address, &td->detach_state); + td->tid = __syscall(SYS_set_tid_address, &__thread_list_lock); td->locale = &libc.global_locale; td->robust_list.head = &td->robust_list.head; + td->next = td->prev = td; return 0; } |