Question

After conda update, python kernel crashes when matplotlib is used

I have create this simple env with conda:

conda create -n test python=3.8.5 pandas scipy numpy matplotlib seaborn jupyterlab

The following code in jupyter lab crashes the kernel :

import matplotlib.pyplot as plt

plt.subplot()

I don't face the problem on Linux. The problem is when I try on Windows 10.

There are no errors on the jupyter lab console (where I started the server), and I have no idea where to investigate.

 46  29548  46
1 Jan 1970

Solution

 74

Update 2021-11-06

  • The default pkgs/main channel for conda has reverted to using freetype 2.10.4 for Windows, per main / packages / freetype.
  • If you are still experiencing the issue, use conda list freetype to check the version: freetype != 2.11.0
    • If it is 2.11.0, then change the version, per the solution, or conda update --all (providing your default channel isn't changed in the .condarc config file).

Solution

  • If this is occurring after installing Anaconda, updating conda or freetype since Oct 27, 2021.
  • Go to the Anaconda prompt and downgrade freetype 2.11.0 in any affected environment.
    • conda install freetype=2.10.4
  • Relevant to any package using matplotlib and any IDE
    • For example, pandas.DataFrame.plot and seaborn
    • Jupyter, Spyder, VSCode, PyCharm, command line.

Discovery

  • An issue occurs after updating with the most current updates from conda, released Friday, Oct 29.
  • After updating with conda update --all, there's an issue with anything related to matplotlib in any IDE (not just Jupyter).
    • I tested this in JupyterLab, PyCharm, and python from the command prompt.
    • PyCharm: Process finished with exit code -1073741819
    • JupyterLab: kernel just restarts and there are no associated errors or Traceback
    • command prompt: a blank interactive matplotlib window will appear briefly, and then a new command line appears.
  • The issue seems to be with conda update --all in (base), then any plot API that uses matplotlib (e.g. seaborn and pandas.DataFrame.plot) kills the kernel in any environment.
  • I had to reinstall Anaconda, but do not do an update of (base), then my other environments worked.
  • I have not figured out what specifically is causing the issue.
  • I tested the issue with python 3.8.12 and python 3.9.7
  • Current Testing:
    • Following is the conda revision log.
    • Prior to conda update --all this environment was working, but after the updates, plotting with matplotlib crashes the python kernel
  2021-10-31 10:47:22  (rev 3)
     bokeh  {2.3.3 (defaults/win-64) -> 2.4.1 (defaults/win-64)}
     click  {8.0.1 (defaults/noarch) -> 8.0.3 (defaults/noarch)}
     filelock  {3.0.12 (defaults/noarch) -> 3.3.1 (defaults/noarch)}
     freetype  {2.10.4 (defaults/win-64) -> 2.11.0 (defaults/win-64)}
     imagecodecs  {2021.6.8 (defaults/win-64) -> 2021.8.26 (defaults/win-64)}
     joblib  {1.0.1 (defaults/noarch) -> 1.1.0 (defaults/noarch)}
     lerc  {2.2.1 (defaults/win-64) -> 3.0 (defaults/win-64)}
     more-itertools  {8.8.0 (defaults/noarch) -> 8.10.0 (defaults/noarch)}
     pyopenssl  {20.0.1 (defaults/noarch) -> 21.0.0 (defaults/noarch)}
     scikit-learn  {0.24.2 (defaults/win-64) -> 1.0.1 (defaults/win-64)}
     statsmodels  {0.12.2 (defaults/win-64) -> 0.13.0 (defaults/win-64)}
     sympy  {1.8 (defaults/win-64) -> 1.9 (defaults/win-64)}
     tqdm  {4.62.2 (defaults/noarch) -> 4.62.3 (defaults/noarch)}
     xlwings  {0.24.7 (defaults/win-64) -> 0.24.9 (defaults/win-64)}
  • The issue seems to be freetype
    • Downgrading from 2.11.0 to 2.10.4 resolved the issue and made the environment work with matplotlib
  • Went to post a bug report and discovered there is [Bug]: Matplotlib crashes Python #21511
2021-10-31

Solution

 5

UPDATE March 2nd 2023:

This is the Output captured from my kernel after dying:

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

OMP: Hint: This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

I was facing the similar problem, I fixed it by deleting the libiomp5md.dll duplicate file from Anaconda environment folder path this directory:

C:\Users\your-user-name.conda\envs\your_env_name\Library\bin\libiomp5md.dll

actually downgrading freetype didn't work for me. you can add 'libiomp5md.dll' back to Original file,it can fix kernel died temporarily but caused OMP error.

2023-03-02