Closed
Description
Bug report
Bug summary
Matplotlib crashes python without rising any exceptions (python simply closes), when draw method is called on FigureCanvasTkAgg object in threaded application from thread other than main thread.
Code for reproduction
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as tk
from threading import Thread
def draw(canvas):
t = Thread(target=canvas.draw)
t.start()
root = tk.Tk()
fig = Figure()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().pack()
tk.Button(root, text='Do it!', command=lambda: draw(canvas)).pack()
root.mainloop()
Actual outcome
When button from example shown above is clicked, application window freezes for a moment and than closes along with python, no exception or error is displayed.
Expected outcome
Preferably draw method should run normally, or at least an exception should be rised.
In Matplotlib 2.2.2 same code snipped runs flawlessly.
Matplotlib version
- Operating system: Windows 10 Home x64
- Matplotlib version: 3.0.2
- Matplotlib backend (
print(matplotlib.get_backend())
): TkAgg - Python version: 3.6.7
- Other libraries: tkinter, threading
Matplotlib installed with 'pip install matplotlib'.