---
name: "pthread_attr_setstacksize"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/pthread_attr_setstacksize"
---

# pthread\_attr\_setstacksize(3)

set/get stack size attribute in thread attributes object

## NAME

pthread\_attr\_setstacksize, pthread\_attr\_getstacksize - set/get stack size attribute in thread attributes object

## LIBRARY

POSIX threads library (*libpthread*, *-lpthread*)

## SYNOPSIS

```
#include <pthread.h>
```

**int pthread\_attr\_setstacksize(pthread\_attr\_t \****attr***, size\_t** *stacksize***);** **int pthread\_attr\_getstacksize(const pthread\_attr\_t \*restrict** *attr***,**                               **size\_t \*restrict** *stacksize***);**

## DESCRIPTION

The **pthread\_attr\_setstacksize**() function sets the stack size attribute of the thread attributes object referred to by *attr* to the value specified in *stacksize*.

The stack size attribute determines the minimum size (in bytes) that will be allocated for threads created using the thread attributes object *attr*.

The **pthread\_attr\_getstacksize**() function returns the stack size attribute of the thread attributes object referred to by *attr* in the buffer pointed to by *stacksize*.

## RETURN VALUE

On success, these functions return 0; on error, they return a nonzero error number.

## ERRORS

**pthread\_attr\_setstacksize**() can fail with the following error:

- **EINVAL**

  The stack size is less than **PTHREAD\_STACK\_MIN** (16384) bytes.

On some systems, **pthread\_attr\_setstacksize**() can fail with the error **EINVAL** if *stacksize* is not a multiple of the system page size.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **pthread\_attr\_setstacksize**(), **pthread\_attr\_getstacksize**() | Thread safety | MT-Safe |

## VERSIONS

These functions are provided since glibc 2.1.

## STANDARDS

POSIX.1-2001, POSIX.1-2008.

## NOTES

For details on the default stack size of new threads, see [**pthread\_create**(3)](/pthread_create/3.md).

A thread's stack size is fixed at the time of thread creation. Only the main thread can dynamically grow its stack.

The [**pthread\_attr\_setstack**(3)](/pthread_attr_setstack/3.md) function allows an application to set both the size and location of a caller-allocated stack that is to be used by a thread.

## BUGS

As at glibc 2.8, if the specified *stacksize* is not a multiple of **STACK\_ALIGN** (16 bytes on most architectures), it may be rounded *downward*, in violation of POSIX.1, which says that the allocated stack will be at least *stacksize* bytes.

## EXAMPLES

See [**pthread\_create**(3)](/pthread_create/3.md).

## SEE ALSO

[**getrlimit**(2)](/getrlimit/2.md), [**pthread\_attr\_init**(3)](/pthread_attr_init/3.md), [**pthread\_attr\_setguardsize**(3)](/pthread_attr_setguardsize/3.md), [**pthread\_attr\_setstack**(3)](/pthread_attr_setstack/3.md), [**pthread\_create**(3)](/pthread_create/3.md), [**pthreads**(7)](/pthreads/7.md)
