---
name: "unw_step"
section: "3"
platform: "linux"
package: "libunwind"
version: "1.8.3-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/unw_step"
---

# unw\_step(3)

## NAME

unw\_step -- advance to next stack frame

## SYNOPSIS

\#include \<libunwind.h\>\

int unw\_step(unw\_cursor\_t \*cp);\

## DESCRIPTION

The unw\_step() routine advances the unwind cursor cp to  the next older, less deeply nested stack frame.

## RETURN VALUE

On successful completion, unw\_step() returns a positive value  if the updated cursor refers to a valid stack frame, or 0 if the  previous stack frame was the last frame in the chain. On error, the  negative value of one of the error-codes below is returned.

## THREAD AND SIGNAL SAFETY

unw\_step() is thread-safe. If cursor cp is in the local  address-space, this routine is also safe to use from a signal handler.

## ERRORS

- UNW\_EUNSPEC

   An unspecified error occurred.

- UNW\_ENOINFO

   Libunwind was unable to locate the  unwind-info needed to complete the operation.

- UNW\_EBADVERSION

   The unwind-info needed to complete the  operation has a version or a format that is not understood by  libunwind.

- UNW\_EINVALIDIP

   The instruction-pointer  (\`\`program-counter'') of the next stack frame is invalid (e.g., not  properly aligned).

- UNW\_EBADFRAME

   The next stack frame is invalid.

- UNW\_ESTOPUNWIND

   Returned if a call to  find\_proc\_info() returned -UNW\_ESTOPUNWIND.

In addition, unw\_step() may return any error returned by the  find\_proc\_info(), get\_dyn\_info\_list\_addr(), access\_mem(), access\_reg(), or access\_fpreg() call-backs (see unw\_create\_addr\_space(3libunwind)).

## SEE ALSO

libunwind(3libunwind), unw\_create\_addr\_space(3libunwind)

## AUTHOR

David Mosberger-Tang\
 Email: **dmosberger@gmail.com**\
 WWW: **http://www.nongnu.org/libunwind/**.
