python / python/cpython

Update `Lib/test/crashers`

Open
#121,921 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

tests
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

The Lib/test/crashers directory contains some Python files that are known to crash the interpreters. I thought it'd be useful to check in on whether they are still crashing the interpreter.

Here's what I get on a current-ish 3.14 build:

  • bogus_code_obj.py: TypeError because we're missing some arguments to the CodeType constructor. I assume this would still crash if you pass the missing args though.
  • gc_inspection.py: segfault
  • infinite_loop_re.py: takes a long time (this is not exactly a crasher, just a ReDoS)
  • mutation_inside_cyclegc.py: no error
  • recursive_call.py: hangs for a long time (this sets the recursion limit to a huge value and then does runaway recursion). I believe Mark Shannon's recent interpreter changes make it so this doesn't segfault. Interestingly, I can't kill the process with Ctrl-C, maybe a bug?
  • trace_at_recursion_limit.py: RecursionError (which is not a crash)
  • underlying_dict.py: segfault

I'll send a PR to make bogus_code_obj.py properly segfault again. Some of the other ones should perhaps be removed.

Linked PRs
  • gh-121922
  • gh-126360

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the listed files in Lib/test/crashers, beginning with bogus_code_obj.py, gc_inspection.py, mutation_inside_cyclegc.py, recursive_call.py, trace_at_recursion_limit.py, and underlying_dict.py. Run them on a current CPython build and compare their behavior with the issue report, while checking linked PRs gh-121922 and gh-126360. Done means the crashers are updated or removed based on their current behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
testing
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.