Skip to content

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

Description

@iccir

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions