kelu-wandb · GitHub

Bug report

Bug description:

Problem summary

Starting in Python 3.13, Lib/pdb.py contains a top-level from rlcompleter import Completer, which indirectly causes a top-level import readline, which deadlocks waiting to access stdin if pdb is imported directly or indirectly in a subprocess launched with either process_group=0 or preexec_fn=setpgrp.

Proposed change

History and Details

  • python/cpython PR 112950, released in Python 3.13, added the from rlcompleter import Completer to Lib/pdb.py. There was no top-level indirect import of readline before this.
  • This only impacts import readline when it's backed by GNU libreadline. Notably, the Mac default Python installation uses libedit instead, so on Macs this can only be reproduced by using conda or pyenv with a separately downloaded copy of Python 3.13.

Rationale

Full writeup

This issue focuses on the pdb part of the problem.

Here's a comprehensive cross-functional writeup about the issue: https://github.com/kelu-wandb/public-demo/tree/main/pgrp-torch-pdb-readline

CPython versions tested on:

3.13

Operating systems tested on:

macOS

Linked PRs

Read the original on github.com ↗