Bug summary
- Run the attached code with the tkagg backend
- Control-C during the input()
- 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
Bug summary
Code for reproduction
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