Commit Graph

3 Commits

Author SHA1 Message Date
Michael Kerrisk c2befb6a93 pthread_attr_setstacksize.3: EINVAL occurs on some systems if stacksize != page-size
On MacOS X at least, pthread_attr_setstacksize(3) can fail
with EINVAL if 'stacksize' is not a multiple of the system
page size.  Best to mention this so as to aid people writing
portable programs.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Reported-by: Karsten Weiss <knweiss@gmail.com>

==
From: Karsten Weiss <knweiss@gmail.com>
Date: Fri, Oct 31, 2008 at 3:46 PM
Subject: pthread_create(3) - example bug + problems

[...]
A look in the pthread_set_stacksize man page on Mac revealed that on
Mac the stack size must not only be at least PTHREAD_STACK_MIN...
[...]
...but the new stack size must also be a multiple of the system page
size!

From pthread_attr_setstacksize(3):

    pthread_attr_setstacksize() will fail if:

    [EINVAL]           Invalid value for attr.
    [EINVAL]           stacksize is less than PTHREAD_STACK_MIN.
!!!  [EINVAL]           stacksize is not a multiple of the system page size.

See for yourself (PTHREAD_STACK_MIN==8192 on Mac OS X):

$ ./pthread_test -s $((8192*10-1)) a
pthread_attr_setstacksize: Invalid argument
$ ./pthread_test -s $((8192*10)) a
Thread 1: top of stack near 0xb0014f6c; argv_string=a
Joined with thread 1; returned value was A
$ ./pthread_test -s $((8192*10+1)) a
pthread_attr_setstacksize: Invalid argument
2008-11-06 16:49:05 -05:00
Michael Kerrisk 630a1725b5 pthread_attr_setstacksize.3: wfix: s/pthread_attr_setscope/pthread_attr_setstacksize/
Reported-by: Stefan Puiu <stefan.puiu@gmail.com>
2008-10-29 14:54:19 -05:00
Michael Kerrisk 5a8b01e1b9 pthread_attr_setstacksize.3: New page for pthread_attr_setstacksize(3) and pthread_attr_getstacksize(3)
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2008-10-29 14:54:16 -05:00