fix pthread_create regression from stack/guard size simplification
authorRich Felker <dalias@aerifal.cx>
Tue, 8 Nov 2016 16:51:57 +0000 (11:51 -0500)
committerRich Felker <dalias@aerifal.cx>
Tue, 8 Nov 2016 16:51:57 +0000 (11:51 -0500)
commit 33ce920857405d4f4b342c85b74588a15e2702e5 broke pthread_create
in the case where a null attribute pointer is passed; rather than
using the default sizes, sizes of 0 (plus the remainder of one page
after TLS/TCB use) were used.

src/thread/pthread_create.c

index db9e575efcea8e01e6ef63d7c321c5d3ce627c08..e8d4a635881e0c2087b41277ea8e71ad5860b74b 100644 (file)
@@ -186,7 +186,10 @@ int __pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict att
                | CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS
                | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED;
        int do_sched = 0;
-       pthread_attr_t attr = {0};
+       pthread_attr_t attr = {
+               ._a_stacksize = DEFAULT_STACK_SIZE,
+               ._a_guardsize = DEFAULT_GUARD_SIZE,
+       };
 
        if (!libc.can_do_threads) return ENOSYS;
        self = __pthread_self();