Details
-
Task
-
Resolution: Unresolved
-
P2: Important
-
6.10
-
None
Description
In case of an infinite loop, qmlls would start to handle a request and get stuck forever. From a user perspective, nothing indicates that something went wrong but things like semantic highlighting and completions stop working.
We can't guarantee that there will never be an infinite loop but we could have a watchdog thread kill qmlls when it misbehaves (for some defintion of that). The client would then simply restart qmlls and we can hope that since the user code changed, the infinite loop might not happen again.
Again from the perspective of the user, this might change qmlls from not working until the IDE is restarted (and having a core at 100%) to qmlls having a temporary hiccup.
Maybe if qmlls doesn't respond to a request or doesn't show another sign of life for something like 10 seconds, it needs to be killed and restarted.