[Bug 234775] PTHREAD_STACK_MIN is too small on amd64

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 02 Dec 2021 21:11:38 UTC

--- Comment #6 from Paul Floyd <pjfloyd@wanadoo.fr> ---
I modified the testcase to take the stack size as an argument and print
"success" if the thread gets created and joins.

#include <limits.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

static void *
fn(void *arg __unused)
   return (NULL);

main(int argc, char** argv)
   pthread_t t;
   pthread_attr_t attr;
   size_t size = (size_t)atoi(argv[1]);

   /*(void)pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN);*/
   (void)pthread_attr_setstacksize(&attr, size);

   (void)pthread_create(&t, &attr, fn, NULL);
   (void)pthread_join(t, NULL);


    return (0);

then I wrote a little python script to do a binary search to find the minimum


import subprocess

def binary_search(start, end):
   while (start <= end):
      mid = (start + end ) // 2
      status = subprocess.run(['./pthread_stack', str(mid)],
      if (status.stdout.decode().strip("\n") == "success"):
         end = mid - 1
         start = mid + 1
   return mid

res = binary_search(1, 10000)
print("res " + str(res))

For an i386 binary compiled with
clang -g -o pthread_stack pthread_stack.c -pthread -m32
I get

res 2788

and for an amd64 binary (as before but without -m32) I get

res 3024

You are receiving this mail because:
You are the assignee for the bug.