microsoft / microsoft/copilot-for-eclipse

[Bug] 0.21.0 hangs for 10 minutes on cancel in the Chat view

Open
#405 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Java
Stars
126
Forks
60
Avg merge
2d 6h
Merged PRs (30d)
5

Description

Environment

  • OS: RHEL 9.6
  • Eclipse Version: 4.38
  • Plugin Version: 0.21.0

Describe the bug
Open Chat
Open Java file
Ask /explain with the Claude Opus 4.8 medium model
Nothing happens for some time, so try to "cancel".
UI hangs for ~10 minutes (no CPU load).

After the hang three log entries are logged,

org.eclipse.lsp4e
Info
Fri Aug 07 11:31:30 CEST 2026
[LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

followed by an error

com.microsoft.copilot.eclipse
Error
Fri Aug 07 11:31:31 CEST 2026
[Error] org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Invalid allowlist format: registry entries missing required fields

java.util.concurrent.CompletionException: org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Invalid allowlist format: registry entries missing required fields
	at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323)
	at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:412)
	at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:421)
	at java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1118)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleResponse(RemoteEndpoint.java:214)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:198)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$3(LanguageServerWrapper.java:458)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:189)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:97)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:97)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
	at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Invalid allowlist format: registry entries missing required fields
	... 11 more

Note: the model management page is empty (not sure it is related):

Image

and it poplates only after the hang is resolved.

The UI itself hangs in this stack:

"main" #3 [161792] prio=6 os_prio=0 cpu=18177.04ms elapsed=211.23s tid=0x00007f5b2802ebf0 nid=161792 waiting for monitor entry  [0x00007f5b2e9fc000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.lsp4j.jsonrpc.json.StreamMessageConsumer.consume(StreamMessageConsumer.java:67)
        - waiting to lock <0x000000040cf71510> (a java.lang.Object)
        at org.eclipse.lsp4e.LanguageServerWrapper.lambda$3(LanguageServerWrapper.java:458)
        at org.eclipse.lsp4e.LanguageServerWrapper$$Lambda/0x00000000680ccc00.consume(Unknown Source)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.notify(RemoteEndpoint.java:135)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.sendCancelNotification(RemoteEndpoint.java:185)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.lambda$request$1(RemoteEndpoint.java:157)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint$$Lambda/0x0000000068105000.run(Unknown Source)
        at org.eclipse.lsp4j.jsonrpc.JsonRpcRequestFuture.cancelRequest(JsonRpcRequestFuture.java:126)
        at org.eclipse.lsp4j.jsonrpc.JsonRpcRequestFuture.cancel(JsonRpcRequestFuture.java:99)
        at org.eclipse.lsp4e.LanguageServerWrapper.lambda$24(LanguageServerWrapper.java:1077)
        at org.eclipse.lsp4e.LanguageServerWrapper$$Lambda/0x00000000680cc400.apply(Unknown Source)
        at java.util.concurrent.CompletableFuture.uniExceptionally(java.base@25/CompletableFuture.java:1011)
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(java.base@25/CompletableFuture.java:995)
        at java.util.concurrent.CompletableFuture.postComplete(java.base@25/CompletableFuture.java:531)
        at java.util.concurrent.CompletableFuture.cancel(java.base@25/CompletableFuture.java:2554)
        at org.eclipse.lsp4e.LanguageServerWrapper.lambda$22(LanguageServerWrapper.java:1034)
        at org.eclipse.lsp4e.LanguageServerWrapper$$Lambda/0x00000000680cc800.apply(Unknown Source)
        at java.util.concurrent.CompletableFuture.uniExceptionally(java.base@25/CompletableFuture.java:1011)
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(java.base@25/CompletableFuture.java:995)
        at java.util.concurrent.CompletableFuture.postComplete(java.base@25/CompletableFuture.java:531)
        at java.util.concurrent.CompletableFuture.cancel(java.base@25/CompletableFuture.java:2554)
        at com.microsoft.copilot.eclipse.ui.chat.ChatView.lambda$35(ChatView.java:1413)
        at com.microsoft.copilot.eclipse.ui.chat.ChatView$$Lambda/0x0000000068dbf000.accept(Unknown Source)
        at java.lang.Iterable.forEach(java.base@25/Iterable.java:75)
        at com.microsoft.copilot.eclipse.ui.chat.ChatView.onCancel(ChatView.java:1412)
        at com.microsoft.copilot.eclipse.ui.chat.ActionBar.notifyCancel(ActionBar.java:825)
        at com.microsoft.copilot.eclipse.ui.chat.ActionBar.handleCancelMessage(ActionBar.java:818)
        at com.microsoft.copilot.eclipse.ui.chat.ActionBar$4.widgetSelected(ActionBar.java:473)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:290)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5109)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4546)

Full jstack:

thread_dump.txt

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the Chat view cancellation flow with the stated Eclipse and plugin versions, then start with ChatView.onCancel and the cancellation path in LanguageServerWrapper. Inspect the lock contention at StreamMessageConsumer.consume using the supplied thread dump and related log output. Done means cancelling the request no longer blocks the Eclipse UI for minutes and the allowlist error is handled without leaving the model page empty.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.