Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zmq.error.ZMQError: Socket operation on non-socket #17615

Closed
mrclary opened this issue Apr 5, 2022 · 7 comments
Closed

zmq.error.ZMQError: Socket operation on non-socket #17615

mrclary opened this issue Apr 5, 2022 · 7 comments

Comments

@mrclary
Copy link
Contributor

mrclary commented Apr 5, 2022

Description

What steps will reproduce the problem?

Closing the IPython Console tab causes errors in tornado.general, tornado.application, and asyncio due to zmq socket issues.

(spy-dev) >> python bootstrap.py --safe-mode -- --debug-info=minimal
spyder-debug.log
2022-04-04 18:41:34,573 [INFO] [spyder.app.mainwindow] -> Start of MainWindow constructor
2022-04-04 18:41:34,576 [INFO] [spyder.app.mainwindow] -> End of MainWindow constructor
2022-04-04 18:41:34,576 [INFO] [spyder.app.mainwindow] -> *** Start of MainWindow setup ***
2022-04-04 18:41:34,577 [INFO] [spyder.app.mainwindow] -> Updating PYTHONPATH
2022-04-04 18:41:34,577 [INFO] [spyder.app.mainwindow] -> Applying theme configuration...
2022-04-04 18:41:34,590 [INFO] [spyder.app.mainwindow] -> Loading switcher...
2022-04-04 18:41:36,120 [INFO] [spyder.app.mainwindow] -> Loading Appearance...
2022-04-04 18:41:36,241 [INFO] [spyder.app.mainwindow] -> Loading appearance...
2022-04-04 18:41:36,241 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for appearance...
2022-04-04 18:41:36,243 [INFO] [spyder.app.mainwindow] -> Loading Application...
2022-04-04 18:41:36,254 [INFO] [spyder.app.mainwindow] -> Loading application...
2022-04-04 18:41:36,255 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for application...
2022-04-04 18:41:36,271 [INFO] [spyder.app.mainwindow] -> Loading Breakpoints...
2022-04-04 18:41:36,274 [INFO] [spyder.app.mainwindow] -> Loading breakpoints...
2022-04-04 18:41:36,287 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for breakpoints...
2022-04-04 18:41:36,355 [INFO] [spyder.app.mainwindow] -> Loading Completion and linting...
2022-04-04 18:41:36,358 [INFO] [spyder.app.mainwindow] -> Loading completions...
2022-04-04 18:41:36,358 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for completions...
2022-04-04 18:41:36,381 [INFO] [spyder.app.mainwindow] -> Loading Files...
2022-04-04 18:41:36,422 [INFO] [spyder.app.mainwindow] -> Loading explorer...
2022-04-04 18:41:36,451 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for explorer...
2022-04-04 18:41:36,484 [INFO] [spyder.app.mainwindow] -> Loading Find...
2022-04-04 18:41:36,489 [INFO] [spyder.app.mainwindow] -> Loading find_in_files...
2022-04-04 18:41:36,511 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for find_in_files...
2022-04-04 18:41:36,683 [INFO] [spyder.app.mainwindow] -> Loading Help...
2022-04-04 18:41:36,690 [INFO] [spyder.app.mainwindow] -> Loading help...
2022-04-04 18:41:36,733 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for help...
2022-04-04 18:41:36,787 [INFO] [spyder.app.mainwindow] -> Loading History...
2022-04-04 18:41:36,793 [INFO] [spyder.app.mainwindow] -> Loading historylog...
2022-04-04 18:41:36,815 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for historylog...
2022-04-04 18:41:36,818 [INFO] [spyder.plugins.console.widgets.main_widget] -> Initializing...
2022-04-04 18:41:36,933 [INFO] [spyder.app.mainwindow] -> Loading Internal console...
2022-04-04 18:41:36,939 [INFO] [spyder.app.mainwindow] -> Loading internal_console...
2022-04-04 18:41:36,956 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for internal_console...
2022-04-04 18:41:36,983 [INFO] [spyder.app.mainwindow] -> Loading IPython console...
2022-04-04 18:41:36,989 [INFO] [spyder.app.mainwindow] -> Loading ipython_console...
2022-04-04 18:41:37,006 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for ipython_console...
2022-04-04 18:41:37,016 [INFO] [spyder.app.mainwindow] -> Loading Layout...
2022-04-04 18:41:37,018 [INFO] [spyder.app.mainwindow] -> Loading layout...
2022-04-04 18:41:37,018 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for layout...
2022-04-04 18:41:37,020 [INFO] [spyder.app.mainwindow] -> Loading Python interpreter...
2022-04-04 18:41:37,023 [INFO] [spyder.app.mainwindow] -> Loading main_interpreter...
2022-04-04 18:41:37,027 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for main_interpreter...
2022-04-04 18:41:37,069 [INFO] [spyder.app.mainwindow] -> Loading Main menus...
2022-04-04 18:41:37,085 [INFO] [spyder.app.mainwindow] -> Loading mainmenu...
2022-04-04 18:41:37,086 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for mainmenu...
2022-04-04 18:41:37,124 [INFO] [spyder.app.mainwindow] -> Loading Online help...
2022-04-04 18:41:37,131 [INFO] [spyder.app.mainwindow] -> Loading onlinehelp...
2022-04-04 18:41:37,155 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for onlinehelp...
2022-04-04 18:41:37,223 [INFO] [spyder.app.mainwindow] -> Loading Outline Explorer...
2022-04-04 18:41:37,232 [INFO] [spyder.app.mainwindow] -> Loading outline_explorer...
2022-04-04 18:41:37,246 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for outline_explorer...
2022-04-04 18:41:37,266 [INFO] [spyder.app.mainwindow] -> Loading Plots...
2022-04-04 18:41:37,270 [INFO] [spyder.app.mainwindow] -> Loading plots...
2022-04-04 18:41:37,282 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for plots...
2022-04-04 18:41:37,284 [INFO] [spyder.app.mainwindow] -> Loading Preferences...
2022-04-04 18:41:37,285 [INFO] [spyder.app.mainwindow] -> Loading preferences...
2022-04-04 18:41:37,285 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for preferences...
2022-04-04 18:41:37,462 [INFO] [spyder.app.mainwindow] -> Loading Profiler...
2022-04-04 18:41:37,466 [INFO] [spyder.app.mainwindow] -> Loading profiler...
2022-04-04 18:41:37,482 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for profiler...
2022-04-04 18:41:37,551 [INFO] [spyder.app.mainwindow] -> Loading Projects...
2022-04-04 18:41:37,562 [INFO] [spyder.app.mainwindow] -> Loading project_explorer...
2022-04-04 18:41:37,601 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for project_explorer...
2022-04-04 18:41:37,651 [INFO] [spyder.app.mainwindow] -> Loading Code Analysis...
2022-04-04 18:41:37,657 [INFO] [spyder.app.mainwindow] -> Loading pylint...
2022-04-04 18:41:37,675 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for pylint...
2022-04-04 18:41:37,677 [INFO] [spyder.app.mainwindow] -> Loading Run...
2022-04-04 18:41:37,678 [INFO] [spyder.app.mainwindow] -> Loading run...
2022-04-04 18:41:37,678 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for run...
2022-04-04 18:41:37,679 [INFO] [spyder.app.mainwindow] -> Loading Keyboard shortcuts...
2022-04-04 18:41:37,679 [INFO] [spyder.app.mainwindow] -> Loading shortcuts...
2022-04-04 18:41:37,679 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for shortcuts...
2022-04-04 18:41:37,691 [INFO] [spyder.app.mainwindow] -> Loading Status bar...
2022-04-04 18:41:37,692 [INFO] [spyder.app.mainwindow] -> Loading statusbar...
2022-04-04 18:41:37,692 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for statusbar...
2022-04-04 18:41:37,715 [INFO] [spyder.app.mainwindow] -> Loading Toolbar...
2022-04-04 18:41:37,717 [INFO] [spyder.app.mainwindow] -> Loading toolbar...
2022-04-04 18:41:37,717 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for toolbar...
2022-04-04 18:41:37,728 [INFO] [spyder.app.mainwindow] -> Loading Interactive tours...
2022-04-04 18:41:37,731 [INFO] [spyder.app.mainwindow] -> Loading tours...
2022-04-04 18:41:37,731 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for tours...
2022-04-04 18:41:37,747 [INFO] [spyder.app.mainwindow] -> Loading Variable explorer...
2022-04-04 18:41:37,750 [INFO] [spyder.app.mainwindow] -> Loading variable_explorer...
2022-04-04 18:41:37,759 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for variable_explorer...
2022-04-04 18:41:37,808 [INFO] [spyder.app.mainwindow] -> Loading Current working directory...
2022-04-04 18:41:37,823 [INFO] [spyder.app.mainwindow] -> Loading workingdir...
2022-04-04 18:41:37,823 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for workingdir...
2022-04-04 18:41:38,021 [INFO] [spyder.app.mainwindow] -> Loading Terminal...
2022-04-04 18:41:38,036 [INFO] [spyder.app.mainwindow] -> Loading terminal...
2022-04-04 18:41:38,057 [INFO] [spyder.app.mainwindow] -> Registering shortcuts for terminal...
2022-04-04 18:41:38,058 [INFO] [spyder.app.mainwindow] -> Loading old third-party plugins...
2022-04-04 18:41:38,065 [INFO] [spyder.app.mainwindow] -> Creating Menus...
2022-04-04 18:41:38,069 [INFO] [spyder.app.mainwindow] -> Creating toolbars...
2022-04-04 18:41:38,069 [INFO] [spyder.app.mainwindow] -> Creating Tools menu...
2022-04-04 18:41:38,070 [INFO] [spyder.app.mainwindow] -> Setting up main window...
2022-04-04 18:41:38,078 [INFO] [spyder.app.mainwindow] -> Setting up window...
2022-04-04 18:41:38,085 [INFO] [spyder.app.mainwindow] -> Tabify terminal dockwidget for the first time...
2022-04-04 18:41:38,089 [INFO] [spyder.app.mainwindow] -> Tabify profiler dockwidget for the first time...
2022-04-04 18:41:38,092 [INFO] [spyder.app.mainwindow] -> Tabify breakpoints dockwidget for the first time...
2022-04-04 18:41:39,235 [INFO] [spyder.app.mainwindow] -> *** End of MainWindow setup ***
2022-04-04 18:41:39,589 [INFO] [spyder.plugins.ipythonconsole.utils.kernelspec] -> Kernel command: ['/Users/rclary/opt/miniconda3/envs/spy-dev/bin/python', '-m', 'spyder_kernels.console', '-f', '{connection_file}']
2022-04-04 18:41:39,622 [INFO] [spyder.plugins.ipythonconsole.utils.kernelspec] -> Kernel command: ['/Users/rclary/opt/miniconda3/envs/spy-dev/bin/python', '-m', 'spyder_kernels.console', '-f', '{connection_file}']
2022-04-04 18:41:39,629 [INFO] [spyder.plugins.ipythonconsole.utils.kernelspec] -> Kernel command: ['/Users/rclary/opt/miniconda3/envs/spy-dev/bin/python', '-m', 'spyder_kernels.console', '-f', '{connection_file}']
2022-04-04 18:41:40,333 [INFO] [spyder.plugins.completion.providers.languageserver.provider] -> Starting LSP client for python...
2022-04-04 18:41:40,335 [INFO] [spyder.plugins.completion.providers.languageserver.client] -> Starting server: /Users/rclary/opt/miniconda3/envs/spy-dev/bin/python -m pylsp --host 127.0.0.1 --port 2087 --tcp --check-parent-process --log-file /var/folders/5v/28jqvwxs2cd5fj93gvwnykdrqc926z/T/spyder-clean-conf-dirs/f2bd899235b8/lsp_logs/server_python_94050.log -v
2022-04-04 18:41:40,338 [INFO] [spyder.plugins.completion.providers.languageserver.client] -> Starting transport for python: /Users/rclary/opt/miniconda3/envs/spy-dev/bin/python -u /Users/rclary/Documents/Python/spyder/spyder/plugins/completion/providers/languageserver/transport/main.py --folder /var/folders/5v/28jqvwxs2cd5fj93gvwnykdrqc926z/T/spyder-clean-conf-dirs/f2bd899235b8/lsp_paths/root_path --transport-debug 2 --server-host 127.0.0.1 --server-port 2087  --zmq-in-port 64762 --zmq-out-port 64763 --external-server
2022-04-04 18:41:40,440 [INFO] [spyder.app.mainwindow] -> Restoring undocked plugins from the previous session
2022-04-04 18:42:35,700 [ERROR] [tornado.general] -> Uncaught exception in zmqstream callback
Traceback (most recent call last):
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 461, in _handle_events
    self._rebuild_io_state()
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 516, in _rebuild_io_state
    self._update_handler(state)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 533, in _update_handler
    if state & self.socket.events:
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/sugar/attrsettr.py", line 51, in __getattr__
    return self._get_attr_opt(upper_key, opt)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/sugar/attrsettr.py", line 63, in _get_attr_opt
    return self.get(opt)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/_future.py", line 215, in get
    result = super(_AsyncSocket, self).get(key)
  File "zmq/backend/cython/socket.pyx", line 464, in zmq.backend.cython.socket.Socket.get
  File "zmq/backend/cython/socket.pyx", line 135, in zmq.backend.cython.socket._check_closed
zmq.error.ZMQError: Socket operation on non-socket
2022-04-04 18:42:35,703 [ERROR] [tornado.application] -> Exception in callback functools.partial(<function ZMQStream._update_handler.<locals>.<lambda> at 0x1c5020550>)
Traceback (most recent call last):
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/tornado/ioloop.py", line 741, in _run_callback
    ret = callback()
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 536, in <lambda>
    self.io_loop.add_callback(lambda: self._handle_events(self.socket, 0))
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 461, in _handle_events
    self._rebuild_io_state()
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 516, in _rebuild_io_state
    self._update_handler(state)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/eventloop/zmqstream.py", line 533, in _update_handler
    if state & self.socket.events:
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/sugar/attrsettr.py", line 51, in __getattr__
    return self._get_attr_opt(upper_key, opt)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/sugar/attrsettr.py", line 63, in _get_attr_opt
    return self.get(opt)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/_future.py", line 215, in get
    result = super(_AsyncSocket, self).get(key)
  File "zmq/backend/cython/socket.pyx", line 464, in zmq.backend.cython.socket.Socket.get
  File "zmq/backend/cython/socket.pyx", line 135, in zmq.backend.cython.socket._check_closed
zmq.error.ZMQError: Socket operation on non-socket
2022-04-04 18:42:35,712 [INFO] [spyder.plugins.ipythonconsole.utils.kernelspec] -> Kernel command: ['/Users/rclary/opt/miniconda3/envs/spy-dev/bin/python', '-m', 'spyder_kernels.console', '-f', '{connection_file}']
2022-04-04 18:42:35,749 [INFO] [spyder.plugins.ipythonconsole.utils.kernelspec] -> Kernel command: ['/Users/rclary/opt/miniconda3/envs/spy-dev/bin/python', '-m', 'spyder_kernels.console', '-f', '{connection_file}']
2022-04-04 18:42:35,827 [ERROR] [asyncio] -> Future exception was never retrieved
future: <Future finished exception=ZMQError('Socket operation on non-socket')>
Traceback (most recent call last):
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/_future.py", line 425, in _add_send_event
    r = send(msg, **nowait_kwargs)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/sugar/socket.py", line 595, in send_multipart
    self.send(msg, SNDMORE | flags, copy=copy, track=track)
  File "/Users/rclary/opt/miniconda3/envs/spy-dev/lib/python3.9/site-packages/zmq/sugar/socket.py", line 547, in send
    return super(Socket, self).send(data, flags=flags, copy=copy, track=track)
  File "zmq/backend/cython/socket.pyx", line 718, in zmq.backend.cython.socket.Socket.send
  File "zmq/backend/cython/socket.pyx", line 765, in zmq.backend.cython.socket.Socket.send
  File "zmq/backend/cython/socket.pyx", line 247, in zmq.backend.cython.socket._send_copy
  File "zmq/backend/cython/socket.pyx", line 242, in zmq.backend.cython.socket._send_copy
  File "zmq/backend/cython/checkrc.pxd", line 28, in zmq.backend.cython.checkrc._check_rc
zmq.error.ZMQError: Socket operation on non-socket
2022-04-04 18:42:35,843 [INFO] [spyder.plugins.ipythonconsole.utils.kernelspec] -> Kernel command: ['/Users/rclary/opt/miniconda3/envs/spy-dev/bin/python', '-m', 'spyder_kernels.console', '-f', '{connection_file}']

Versions

  • Spyder version: 5.4.0.dev0 9b9559a
  • Python version: 3.9.12
  • Qt version: 5.12.9
  • PyQt5 version: 5.12.3
  • Operating System: Darwin 20.6.0

Dependencies

# Mandatory:
applaunchservices >=0.1.7            :  0.2.1 (OK)
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.31.1;<8.0.0              :  7.32.0 (OK)
jedi >=0.17.2;<0.19.0                :  0.18.1 (OK)
jellyfish >=0.7                      :  0.9.0 (OK)
jsonschema >=3.2.0                   :  4.4.0 (OK)
keyring >=17.0.0                     :  23.4.0 (OK)
nbconvert >=4.0                      :  6.4.5 (OK)
numpydoc >=0.6.0                     :  1.2.1 (OK)
parso >=0.7.0;<0.9.0                 :  0.8.3 (OK)
pexpect >=4.4.0                      :  4.8.0 (OK)
pickleshare >=0.4                    :  0.7.5 (OK)
psutil >=5.3                         :  5.9.0 (OK)
pygments >=2.0                       :  2.11.2 (OK)
pylint >=2.5.0                       :  2.13.4 (OK)
pyls_spyder >=0.4.0                  :  0.4.0 (OK)
pylsp >=1.4.1;<1.5.0                 :  1.4.1 (OK)
pylsp_black >=1.2.0                  :  1.2.0 (OK)
qdarkstyle >=3.0.2;<3.1.0            :  3.0.3 (OK)
qstylizer >=0.1.10                   :  0.2.1 (OK)
qtawesome >=1.0.2                    :  1.1.1 (OK)
qtconsole >=5.3.0;<5.4.0             :  5.4.0.dev0 (OK)
qtpy >=2.0.1                         :  2.0.1 (OK)
rtree >=0.9.7                        :  0.9.7 (OK)
setuptools >=49.6.0                  :  62.0.0 (OK)
sphinx >=0.6.6                       :  4.5.0 (OK)
spyder_kernels >=2.3.0;<2.4.0        :  2.4.0.dev0 (OK)
textdistance >=4.2.0                 :  4.2.2 (OK)
three_merge >=0.1.1                  :  0.1.1 (OK)
watchdog >=0.10.3                    :  2.1.7 (OK)
zmq >=17                             :  22.3.0 (OK)

# Optional:
cython >=0.21                        :  0.29.28 (OK)
matplotlib >=3.0.0                   :  3.5.1 (OK)
numpy >=1.7                          :  1.22.3 (OK)
pandas >=1.1.1                       :  1.4.2 (OK)
scipy >=0.17.0                       :  1.8.0 (OK)
sympy >=0.7.3                        :  1.10.1 (OK)

# Spyder plugins:
spyder_terminal.terminalplugin 1.2.1 :  1.2.1 (OK)
@dalthviz
Copy link
Member

dalthviz commented Apr 5, 2022

Seems like this also affected the CI on a merge commit: https://github.com/spyder-ide/spyder/runs/5825464684?check_suite_focus=true#step:15:271

@ccordoba12
Copy link
Member

@mrclary, could you downgrade to jupyter_client 7.1.0 and try again? If that fails, could you also downgrade to ipykernel 6.10.0?

I think the problem is in one of those two dependencies.

@mrclary
Copy link
Contributor Author

mrclary commented Apr 6, 2022

Downgrading jupyter_client=7.1.0 seems to work. I did not have to downgrade ipykernel.

@mrclary
Copy link
Contributor Author

mrclary commented Apr 6, 2022

I can confirm that jupyter_client=7.2.0 also works, and only 7.2.1 causes the issue.

@mrclary
Copy link
Contributor Author

mrclary commented Apr 17, 2022

@ccordoba12 do we want to limit jupyter_client<=7.2.0 or are we going to wait for a possible fix on their end?

@ccordoba12
Copy link
Member

I think it's easier to wait for a fix.

@ccordoba12
Copy link
Member

Closing because this was solved upstream in Jupyter-client 7.3.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants