A deep dive into Python stack frames

1:30pm - 2:00pm on Friday, October 5 in Madison

Nikhil Marathe

Audience Level:
Intermediate
Slides:
https://slides.com/nikhilmarathe/diving-into-python-call-stacks
Watch:
https://youtu.be/smiL_aV1SOc

Overview

Learn how CPython implements the function call stack and how embedders can use this to extract useful reliability reports from their software!

Description

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.

Some prior knowledge of C programming syntax, threading, native function stacks and Python byte code will be useful for attendees to get the most out of this talk.

Want to edit this page?