A deep dive into Python stack frames1:30pm - 2:00pm on Friday, October 5 in Madison
- Audience Level:
Learn how CPython implements the function call stack and how embedders can use this to extract useful reliability reports from their software!
This talk walks listeners through CPython’s implementation of call stacks and how information is encoded in these stacks to aid execution and error recovery. Once we cover that, I will show how we modified the Crashpad crash reporter at Dropbox to extract these stacks from native crashes in the wild to make engineers lives easier. This allows our developers to detect crashes caused on remote user machines due to incorrect Python code, with accurate Python stack traces.
The CPython interpreter implements function call stacks using various structures that act as chains of linked lists. Each interpreter maintains a list of thread states for each thread. Each thread maintains a list of frames that represent the python function calls. New frames are pushed onto the stack as execution proceeds and the interpreter exposes these frames to user space. In addition, these frames can be inspected in native code to extract useful information about program crashes and to profile programs.