[Bug]: macOS: tkagg backend crashes on Control-C after input()

Aperta
#32,017 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
desktop

Direzione di ricerca

Riproduci il crash su macOS con Python 3.14.5 usando lo script fornito e il backend TkAgg. Inizia esaminando la gestione da parte del backend TkAgg della figura non bloccante e dell’interruzione dell’input. Il lavoro è completato quando Control-C non produce più un errore fatale di Python e il comportamento corrisponde al risultato previsto senza crash.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

GUI: tk OS: Apple
Bug summary
  1. Run the attached code with the tkagg backend
  2. Control-C during the input()
  3. The following is displayed:
Fatal Python error: PyEval_RestoreThread: the function must
be called with the GIL held, after Python initialization and
before Python finalization, but the GIL is released (the current
Python thread state is NULL)
Code for reproduction
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm

# matplotlib.use(backend="TkAgg")

plt.style.use("_mpl-gallery")

# Make data
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# Plot the surface
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
ax.plot_surface(X, Y, Z, vmin=Z.min() * 2, cmap=cm.Blues)

ax.set(xticklabels=[], yticklabels=[], zticklabels=[])

plt.show(block=False)

input("Hit [return] to end")
plt.close("all")
Actual outcome

Fatal error. I got the following crash report one time, but haven't seen it since:

tkagg_crash.txt

Expected outcome

Similar to #32016, not a crash, although I'm not 100% sure what it should do. I was thinking that the Control-C would either stop the input() call or immediately close the figure.

Additional information

No response

Operating system

macOS 14.8

Matplotlib Version

3.12.0.dev484+g162d8181d.d20260708

Matplotlib Backend

tkagg

Python version

3.14.5

Jupyter version

No response

Installation

None

Lingua principale
Python
Stelle
23.2k
Fork
8.5k
Merge medio
1g 6h
PR unite (30g)
68

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di matplotlib/matplotlib

Tutte le issue di matplotlib/matplotlib

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.