spyder: Spyder crashes after Monitor Scale change

Description

Spyder crashes after closing (“dismiss”) the Monitor Scale change detected pop-up on remote machine.

What steps will reproduce the problem?

Specific scenario:

  1. Connect to a Remote Desktop with one monitor scale size.
  2. Open Spyder on that Remote Desktop machine.
  3. Close Remote Desktop connection (keep Spyder open on the remote machine).
  4. Re-connect to the same Remote Desktop with a different monitor scale size (e.g. a different local machine).
  5. Spyder produces Monitor Scale change detected pop-up. Click dismiss.
  6. Spyder will crash/close with no error thrown.

Note: monitor scale change pop up seems to work normally when I move Spyder (in the RD window) between monitors on the local machine.

Pure speculation: could it be that there are three monitor scale changes going on (local machine #1 > remote machine (when RD connection from LM1 is closed) > local machine #2) which is what’s causing the issue?

Versions

  • Spyder version: 4.1.5
  • Python version: 3.8.3
  • Qt version: 5.9.7
  • PyQt5 version: 5.9.2
  • Operating System: Windows 10

Dependencies


# Mandatory:
atomicwrites >=1.2.0           :  1.4.0 (OK)
chardet >=2.0.0                :  3.0.4 (OK)
cloudpickle >=0.5.0            :  1.6.0 (OK)
diff_match_patch >=20181111    :  20200713 (OK)
intervaltree                   :  None (OK)
IPython >=4.0                  :  7.18.1 (OK)
jedi =0.17.1                   :  0.17.1 (OK)
nbconvert >=4.0                :  5.6.1 (OK)
numpydoc >=0.6.0               :  1.1.0 (OK)
paramiko >=2.4.0               :  2.7.2 (OK)
parso =0.7.0                   :  0.7.0 (OK)
pexpect >=4.4.0                :  4.8.0 (OK)
pickleshare >=0.4              :  0.7.5 (OK)
psutil >=5.3                   :  5.7.2 (OK)
pygments >=2.0                 :  2.6.1 (OK)
pylint >=1.0                   :  2.6.0 (OK)
pyls >=0.34.0;<1.0.0           :  0.34.1 (OK)
qdarkstyle >=2.8               :  2.8.1 (OK)
qtawesome >=0.5.7              :  0.7.2 (OK)
qtconsole >=4.6.0              :  4.7.6 (OK)
qtpy >=1.5.0                   :  1.9.0 (OK)
rtree >=0.8.3                  :  0.9.4 (OK)
sphinx >=0.6.6                 :  3.2.1 (OK)
spyder_kernels >=1.9.4;<1.10.0 :  1.9.4 (OK)
watchdog                       :  None (OK)
zmq >=17                       :  19.0.1 (OK)

# Optional:
cython >=0.21                  :  0.29.21 (OK)
matplotlib >=2.0.0             :  3.3.1 (OK)
numpy >=1.7                    :  1.19.1 (OK)
pandas >=0.13.1                :  1.1.1 (OK)
scipy >=0.17.0                 :  1.5.0 (OK)
sympy >=0.7.3                  :  1.6.2 (OK)

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 63 (26 by maintainers)

Most upvoted comments

You need to check out the PR branch before running Spyder; there are aliases to do that or a manual method involving several steps, but the easiest way is to just download and use hub (e.g. with conda install -c conda-forge hub, or with choco, snoop or as a standalone executable), a git wrapper from Github. Once you install it, you just run hub pr checkout 14696 to check out the above PR #14696 .

Thank you. I tried as you suggested but got a “Not Found” error - must have done something wrong there. In the end, I just copied/pasted new mainwindow.py file into the installation directory and it worked!

I was able to connect/disconnect/reconnect from the remote machine with different local machines and Spyder did not crash. Got the warning (only once), clicked dismiss and was able to continue as expected.

Thanks for checking, I did not get the opportunity to quickly test this time around! And also thanks for the fix, of course! 👍

Thanks @bilderbuchi and @Caseyb87 for the info regarding this! Seems like now we have more clues about how to prevent the crash to happen 😃 Maybe the condition to check needs to be regarding if we are currently running in a RDP session (although I’m unsure how we can achieve such validation 😕)

Hi @arnaud-nt2i sorry to hear that 😕 and yes as @Caseyb87 said, basically we will not be working on this for the next release. However if someone else wants to work on it (for example if you guys @Caseyb87 or @arnaud-nt2i want to try to fix the issue) we could review the work and add it to the next release! (if finished before the next release of course).

So, let us know if you guys want to try to implement the fix! We will more than happy to guide/help you and review the work 😄

@Caseyb87 maybe running spyder --debug-info verbose from the Anaconda Prompt could show something.

Any new info is greatly appreciated 😃

Looks like something got recorded. This was triggered after clicking “dismiss” on the prompt (the previous line was just an autosave). Spyder then crash/closed.

2020-11-24 16:27:12,753 [DEBUG] [urllib3.connectionpool] -> http://127.0.0.1:46624 “GET /clientapi/status?filename=removed for privacy HTTP/1.1” 200 121 QPaintDevice::metrics: Device has no metric information QPaintDevice::metrics: Device has no metric information QPaintDevice::metrics: Device has no metric information QPaintDevice::metrics: Device has no metric information Traceback (most recent call last): File “C:\Users\ username \Anaconda3\lib\site-packages\spyder\app\mainwindow.py”, line 1414, in handle_new_screen self.screen.logicalDotsPerInchChanged.connect( AttributeError: ‘NoneType’ object has no attribute ‘logicalDotsPerInchChanged’ QPaintDevice::metrics: Device has no metric information QPaintDevice::metrics: Device has no metric information QPaintDevice::metrics: Device has no metric information

Hopefully that’s helpful!