python / python/cpython

Closed `sys.stdout` causes an endless stream of tracebacks in the repl

Abierto
#157,581 1 comentario 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

stdlib topic-repl type-bug
Lenguaje dominante
Python
Estrellas
77.2k
Forks
35.9k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Bug report

Bug description:
Steps to reproduce:

Run Python 3.14.7 and enter the following:

import sys
f = open("file.txt", "w")
sys.stdout = f
f.close()

After the file is closed, the REPL attempts to display the next prompt.

Actual behavior:

The REPL repeatedly raises:

ValueError: I/O operation on closed file

This results in a very large stream of repeated tracebacks instead of returning to a usable prompt.
The traceback points to _pyrepl and eventually to:

_colorize.py", line 313, in can_colorize
    return os.isatty(file.fileno())
ValueError: I/O operation on closed file
Expected behavior:

The REPL should handle a closed sys.stdout gracefully instead of repeatedly emitting tracebacks.

Environment:

Python: 3.14.7
OS: Fedora Linux 44 (Workstation Edition) x86_64

CPython versions tested on:

3.14

Operating systems tested on:

Linux

Linked PRs
  • gh-157590

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el traceback de _pyrepl y el punto de entrada can_colorize en _colorize.py alrededor de la línea 313, y luego reproduce el caso de sys.stdout cerrado en la REPL de Python 3.14. Se considera terminado cuando un stdout cerrado ya no produce un flujo interminable de tracebacks y la REPL gestiona correctamente el siguiente prompt.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
cli
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.