bloomberg / bloomberg/pystack

Native unwinding fails across signal frames on AArch64

Open
#341 4 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
C++
Stars
1.2k
Forks
72
Avg merge
5d 10h
Merged PRs (30d)
5

Description

### Is there an existing issue for this?

- [x] I have searched the existing issues

### Current Behavior

It looks like elfutils fails to unwind past the signal frame on AArch64, so pystack cannot recover the native frames below it. Would you be interested in a patch for this?

### Expected Behavior

_No response_

### Steps To Reproduce

run this script
```python
import ctypes
import os
import signal
import subprocess

@ctypes.CFUNCTYPE(None, ctypes.c_int)
def dump_stack(*_):
subprocess.run(
["pystack", "remote", "--native", "--no-color", str(os.getpid())]
)

libc = ctypes.CDLL(None)
libc.signal.argtypes = (ctypes.c_int, ctypes.c_void_p)
libc.signal(signal.SIGUSR1, dump_stack)
os.kill(os.getpid(), signal.SIGUSR1)
```
and get
```bash
* - Unable to merge native stack due to insufficient native information - *
```

### Pystack Version

1.7.0

### Python Version

3.13

### Linux distribution

Debian

### Anything else?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.