spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.33k stars 1.61k forks source link

IPython kernel hangs and does not restart when running files with Automatic graphics backend and using Wayland #16400

Open remisalmon opened 3 years ago

remisalmon commented 3 years ago

Issue Report Checklist

Problem Description

When using the Graphics backend toAutomatic, running files (F5) hangs and it is not possible to restart the IPython kernel with Spyder 5.1.3 on Linux.

What steps reproduce the problem?

  1. Set Graphics backend to Automatic
  2. Try to run a file: IPython hangs (may take a couple of runs)
  3. Try to restart a IPython kernel: nothing happens

What is the expected output? What do you see instead?

I should be able to run files and restart kernels without IPython hanging.

Versions

Dependencies


# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  2.0.0 (OK)
cookiecutter >=1.6.0          :  1.7.3 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.0.2 (OK)
IPython >=7.6.0               :  7.27.0 (OK)
jedi >=0.17.2;<0.19.0         :  0.18.0 (OK)
jsonschema >=3.2.0            :  3.2.0 (OK)
keyring >=17.0.0              :  23.1.0 (OK)
nbconvert >=4.0               :  6.1.0 (OK)
numpydoc >=0.6.0              :  1.1.0 (OK)
parso >=0.7.0;<0.9.0          :  0.8.2 (OK)
pexpect >=4.4.0               :  4.8.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.8.0 (OK)
pygments >=2.0                :  2.10.0 (OK)
pylint >=2.5.0;<2.10.0        :  2.7.2 (OK)
pyls_spyder >=0.4.0           :  0.4.0 (OK)
pylsp >=1.2.2;<1.3.0          :  1.2.2 (OK)
pylsp_black >=1.0.0           :  None (OK)
qdarkstyle =3.0.2             :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.2.1 (OK)
qtawesome >=1.0.2             :  1.0.3 (OK)
qtconsole >=5.1.0             :  5.1.1 (OK)
qtpy >=1.5.0                  :  1.11.0 (OK)
rtree >=0.9.7                 :  0.9.7 (OK)
setuptools >=49.6.0           :  58.0.4 (OK)
sphinx >=0.6.6                :  4.1.2 (OK)
spyder_kernels >=2.1.1;<2.2.0 :  2.1.1 (OK)
textdistance >=4.2.0          :  4.2.1 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3             :  2.1.5 (OK)
xdg >=0.26                    :  0.27 (OK)
zmq >=17                      :  22.2.1 (OK)

# Optional:
cython >=0.21                 :  None (OK)
matplotlib >=2.0.0            :  3.4.3 (OK)
numpy >=1.7                   :  1.21.2 (OK)
pandas >=1.1.1                :  1.3.2 (OK)
scipy >=0.17.0                :  1.7.1 (OK)
sympy >=0.7.3                 :  None (OK)
ccordoba12 commented 3 years ago

Hey @remisalmon, thanks for reporting. I can't reproduce this problem, so please upload an animated gif that shows us how to do it in our side.

remisalmon commented 3 years ago

@ccordoba12 I hope this can help:

https://user-images.githubusercontent.com/26257211/133003750-7c5b0478-04cf-4b73-b2a9-724b82fdd742.mp4

PhanAlexandre commented 3 years ago

I have the same problem on windows. I have manage to replicate the bug on 3 different computer, all with W10, some with fresh environment or anaconda installation. On python 3.8.11 the bug appear when using a graphics backend other than inline (the bug appear with either Automatic, Qt5, Qt4 and Tkinter) and selected "Remove all variable before execution". On temp.py the bug doest appear all the time, but with another file(for example an untitled) it appear all the time. I manage to replicate it on spyder 5.0.5 and 4.2.5 but only on python 3.8. I haven't manage to replicate it with python 3.9. It's possible to de-freeze the kernel by opening, or closing, or interacting with another console. I might be able to show an animated gif latter

henry-gale48 commented 3 years ago

I have the exact same issue, including after updating to 5.1.4. It is also triggered by using %matplotlib auto

ccordoba12 commented 3 years ago

Hey @remisalmon, thanks for the video. I think this problem has to do with Wayland because Conda/Conda-forge Qt packages don't have support for it.

Could you run Spyder under an Xorg session and report back again?

ccordoba12 commented 3 years ago

@PhanAlexandre, about your problem (which is totally different), please see issue #16138.

remisalmon commented 3 years ago

@ccordoba12 you're right: no issue restarting the kernel under Xorg, only when using Wayland + the automatic graphics backend.

ccordoba12 commented 3 years ago

Ok, glad to know. What if you switch the backend to Inline in our Preferences, restart the kernel, and then run this code in the console?

import os
os.environ['XDG_SESSION_TYPE'] = 'x11'
%matplotlib qt

After that, please try to create a plot. That should work because it makes the Qt conda-forge packages to fallback to Xorg and avoid trying to use Wayland.

remisalmon commented 3 years ago

Forcing os.environ['XDG_SESSION_TYPE'] = 'x11' did work (qt plots + able to restart the kernel).

Not sure why it did not work right away since Spyder print this in the terminal before starting: Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

ccordoba12 commented 3 years ago

Ok, that's really good to know. We'll try to fix this before the end of the year.

fmhust commented 2 years ago

This problem can be found in Spyder 5.0.0 and higher version. Spyder 4.2.5 and lower version can work smothly without such problem.

remisalmon commented 2 years ago

Looks like this issue was fixed somehow, closing since I can't reproduce anymore with Spyder 5.3.3.

ccordoba12 commented 2 years ago

There's nothing that has changed in Conda/Conda-forge packages or in our side, so we still need to address it.

James-F1dev commented 1 year ago

I still have this problem in 5.4.2 on Windows. Restarting the kernel works, but interrupting does not.

ccordoba12 commented 1 year ago

@James-F1dev, this is a Linux only issue. Since you problem is different, please open a new issue about it.