CadQuery / CadQuery/CQ-editor

cq-editor console stops working on Windows when fed a line with a SyntaxError

Open
#275 9 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.2k
Forks
210
PR merge metrics
No merged PRs in 30d

Description

### UPDATE

I got this bug after copying a path name on the console without doubling the slashes. Now I did another test and any SyntaxError causes the same problem. For example, simply typing `1 +& 2` breaks the console and requires a restart.

### Original report

When a string with a broken escape sequence is input into console, cq-editor freezes for a moment (about 15 seconds in my PC). After some time it unfreezes and shows a log in the log viewer. However the console becomes unusable after that until I restart cq-editor. Lines are not interpreted anymore..

### Sequence on the console (steps to reproduce)

```
In [1]: s = "abc"

In [2]:print(s)
abc

In [3]: s = "C:\Users\Atual\Google Drive\"
## freezes for about 15 seconds, no output ##

In [4]: print(s)
## freezes for about 15 seconds, no output ##

In [5]: s = "abc"
## freezes again ##

In [5]:print(s)
## freezes again, no output ##
```

### Log Viewer output

```
[2021-07-11 17:59:27.404491] ERROR: tornado.general: Uncaught exception in ZMQStream callback
Traceback (most recent call last):
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 434, in _run_callback
callback(*args, **kwargs)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 126, in _handle_event
event_f()
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 223, in
self.schedule(lambda : self._really_send(*args, **kwargs))
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 231, in _really_send
self.socket.send_multipart(msg, *args, **kwargs)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\inprocess\socket.py", line 37, in send_multipart
self.message_sent += 1
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 604, in __set__
self.set(obj, value)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 593, in set
obj._notify_trait(self.name, old_value, new_value)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1217, in _notify_trait
self.notify_change(Bunch(
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1227, in notify_change
return self._notify_observers(change)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1264, in _notify_observers
c(event)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\inprocess\ipkernel.py", line 134, in _io_dispatch
ident, msg = self.session.recv(self.iopub_socket, copy=False)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\jupyter_client\session.py", line 809, in recv
msg_list = socket.recv_multipart(mode, copy=copy)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 255, in __getattr__
warnings.warn("Accessing zmq Socket attribute %s on BackgroundSocket" % attr,
DeprecationWarning: Accessing zmq Socket attribute recv_multipart on BackgroundSocket
[2021-07-11 17:59:27.477095] ERROR: tornado.general: Uncaught exception in zmqstream callback
Traceback (most recent call last):
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 451, in _handle_events
self._handle_recv()
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 480, in _handle_recv
self._run_callback(callback, msg)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 434, in _run_callback
callback(*args, **kwargs)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 126, in _handle_event
event_f()
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 223, in
self.schedule(lambda : self._really_send(*args, **kwargs))
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 231, in _really_send
self.socket.send_multipart(msg, *args, **kwargs)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\inprocess\socket.py", line 37, in send_multipart
self.message_sent += 1
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 604, in __set__
self.set(obj, value)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 593, in set
obj._notify_trait(self.name, old_value, new_value)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1217, in _notify_trait
self.notify_change(Bunch(
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1227, in notify_change
return self._notify_observers(change)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1264, in _notify_observers
c(event)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\inprocess\ipkernel.py", line 134, in _io_dispatch
ident, msg = self.session.recv(self.iopub_socket, copy=False)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\jupyter_client\session.py", line 809, in recv
msg_list = socket.recv_multipart(mode, copy=copy)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 255, in __getattr__
warnings.warn("Accessing zmq Socket attribute %s on BackgroundSocket" % attr,
DeprecationWarning: Accessing zmq Socket attribute recv_multipart on BackgroundSocket
[2021-07-11 17:59:27.480093] ERROR: asyncio: Exception in callback AddThreadSelectorEventLoop._handle_select([1032], [])
handle:
Traceback (most recent call last):
File "C:\Users\Atual\miniconda3\envs\cq\lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\tornado\platform\asyncio.py", line 579, in _handle_select
self._handle_event(r, self._readers)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\tornado\platform\asyncio.py", line 591, in _handle_event
callback()
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\tornado\platform\asyncio.py", line 189, in _handle_events
handler_func(fileobj, events)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 451, in _handle_events
self._handle_recv()
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 480, in _handle_recv
self._run_callback(callback, msg)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\zmq\eventloop\zmqstream.py", line 434, in _run_callback
callback(*args, **kwargs)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 126, in _handle_event
event_f()
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 223, in
self.schedule(lambda : self._really_send(*args, **kwargs))
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 231, in _really_send
self.socket.send_multipart(msg, *args, **kwargs)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\inprocess\socket.py", line 37, in send_multipart
self.message_sent += 1
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 604, in __set__
self.set(obj, value)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 593, in set
obj._notify_trait(self.name, old_value, new_value)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1217, in _notify_trait
self.notify_change(Bunch(
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1227, in notify_change
return self._notify_observers(change)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\traitlets\traitlets.py", line 1264, in _notify_observers
c(event)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\inprocess\ipkernel.py", line 134, in _io_dispatch
ident, msg = self.session.recv(self.iopub_socket, copy=False)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\jupyter_client\session.py", line 809, in recv
msg_list = socket.recv_multipart(mode, copy=copy)
File "C:\Users\Atual\miniconda3\envs\cq\lib\site-packages\ipykernel\iostream.py", line 255, in __getattr__
warnings.warn("Accessing zmq Socket attribute %s on BackgroundSocket" % attr,
DeprecationWarning: Accessing zmq Socket attribute recv_multipart on BackgroundSocket
[2021-07-11 17:59:47.534443] INFO: ipykernel.inprocess.ipkernel: Exception in execute request:
 File "C:\Users\Atual\AppData\Local\Temp/ipykernel_9144/1192934994.py", line 1
 s = "C:\Users\Atual\Google Drive\"
 ^
SyntaxError: EOL while scanning string literal
```

### Conda terminal window output

On the conda terminal window, the following sequence of errors is registered:

```
(cq) C:\Users\Atual>cq-editor
Namespace(filename=None)
IOStream.flush timed out
IOStream.flush timed out
...
```

### Version info

Version: 0.3.0dev
Windows 10
Installed using Conda and Python 3.9.1

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.