---
name: "pthread_attr_setstackaddr"
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_setstackaddr"
---

# pthread\_attr\_setstackaddr(3)

set/get stack address attribute in thread attributes object

## NAME

pthread\_attr\_setstackaddr, pthread\_attr\_getstackaddr - set/get stack address attribute in thread attributes object

## LIBRARY

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

## SYNOPSIS

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

**\[\[deprecated\]\]** **int pthread\_attr\_setstackaddr(pthread\_attr\_t \****attr***, void \****stackaddr***);** **\[\[deprecated\]\]** **int pthread\_attr\_getstackaddr(const pthread\_attr\_t \*restrict** *attr***,**                               **void \*\*restrict** *stackaddr***);**

## DESCRIPTION

These functions are obsolete: **do not use them.** Use [**pthread\_attr\_setstack**(3)](/pthread_attr_setstack/3.md) and [**pthread\_attr\_getstack**(3)](/pthread_attr_getstack/3.md) instead.

The **pthread\_attr\_setstackaddr**() function sets the stack address attribute of the thread attributes object referred to by *attr* to the value specified in *stackaddr*. This attribute specifies the location of the stack that should be used by a thread that is created using the thread attributes object *attr*.

*stackaddr* should point to a buffer of at least **PTHREAD\_STACK\_MIN** bytes that was allocated by the caller. The pages of the allocated buffer should be both readable and writable.

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

## RETURN VALUE

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

## ERRORS

No errors are defined (but applications should nevertheless handle a possible error return).

## ATTRIBUTES

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

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

## STANDARDS

None.

## HISTORY

glibc 2.1. Marked obsolete in POSIX.1-2001. Removed in POSIX.1-2008.

## NOTES

*Do not use these functions!* They cannot be portably used, since they provide no way of specifying the direction of growth or the range of the stack. For example, on architectures with a stack that grows downward, *stackaddr* specifies the next address past the *highest* address of the allocated stack area. However, on architectures with a stack that grows upward, *stackaddr* specifies the *lowest* address in the allocated stack area. By contrast, the *stackaddr* used by [**pthread\_attr\_setstack**(3)](/pthread_attr_setstack/3.md) and [**pthread\_attr\_getstack**(3)](/pthread_attr_getstack/3.md), is always a pointer to the lowest address in the allocated stack area (and the *stacksize* argument specifies the range of the stack).

## SEE ALSO

[**pthread\_attr\_init**(3)](/pthread_attr_init/3.md), [**pthread\_attr\_setstack**(3)](/pthread_attr_setstack/3.md), [**pthread\_attr\_setstacksize**(3)](/pthread_attr_setstacksize/3.md), [**pthread\_create**(3)](/pthread_create/3.md), [**pthreads**(7)](/pthreads/7.md)
