about summary refs log tree commit diff
path: root/src/env
diff options
context:
space:
mode:
Diffstat (limited to 'src/env')
-rw-r--r--src/env/__init_tls.c5
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;
 }