From b21d3535a53d03578705f5458c02afc37922d39f Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Mon, 23 Mar 2020 20:12:10 +0100 Subject: [PATCH] std: Fix parameters for pthread_attr_setstack The guard page size shouldn't be taken into account, pthread is only interested in the usable area. --- lib/std/thread.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/std/thread.zig b/lib/std/thread.zig index 4b28d7cf6d..f2b27caa97 100644 --- a/lib/std/thread.zig +++ b/lib/std/thread.zig @@ -375,7 +375,12 @@ pub const Thread = struct { if (c.pthread_attr_init(&attr) != 0) return error.SystemResources; defer assert(c.pthread_attr_destroy(&attr) == 0); - assert(c.pthread_attr_setstack(&attr, mmap_slice.ptr, stack_end_offset) == 0); + // Tell pthread where the effective stack start is and its size + assert(c.pthread_attr_setstack( + &attr, + mmap_slice.ptr + guard_end_offset, + stack_end_offset - guard_end_offset, + ) == 0); const err = c.pthread_create(&thread_ptr.data.handle, &attr, MainFuncs.posixThreadMain, @intToPtr(*c_void, arg)); switch (err) {