Skip to content

[Bug][0.21] Models load requires 10+ minutes, Chat does not work till then #408

Open

Description

Environment

  • OS: RHEL 9.6
  • Eclipse Version: 4.38 & latest 4.41nightly
  • Plugin Version: 0.21.0

Describe the bug
Follow up on initially reported freeze, which I can't reproduce anymore.

But beside the freeze there seem to be a model loading issue which breaks Chat conversation.

Tried same question on same file today, it worked once after IDE was running for few ours. To double check, restarted IDE, asked exact same question again, and got no response at all, cancellation seem not freeze at this time.

The bug seems to be that something with model loading prevents agents (in ask mode) to respond. I've tried to switch model, restart Chat view, ask to /simplify code - no ways, there are no errors, but nothing happens, Chat remains empty, cancellation works and not freezes.

Image

Common in all cases: if it works, I see "models" loaded in preference page. If it doesn't, models page is showing "loading..." text. As soon as the preference page starts to show models, Chat view starts to receive input from LS.

Here are models I can see:

Image

It seems that model loading is the problem and it seems that it hangs now for multiple minutes.

Here is what I see in the log file, the big delay between 11:26 and 11:38 is when the models are NOT shown and Chat does not work:

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:26:28.882
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:38:54.829
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:38:54.882
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:38:56.315
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[agentPrompt] Rendering fresh global context for conversation/turn 6a3e3fb1-9edd-4196-9895-05a8c26287d6/41ccf120-86f5-4052-a697-ffb57e91bbfe

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:38:57.350
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[fetchChat] Request 43c34464-0502-4c16-b763-8ca25b326aa9 at <https://api.enterprise.githubcopilot.com/v1/messages> finished with 200 status after 1003.0455470000161ms

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:39:25.225
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[roundMetricsTracker] Turn token usage: 16738 prompt, 2442 completion, 3325 cached (cache rate: 19.9%)

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:39:25.237
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:39:25.876
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[fetchChat] Request 341cc5d5-bd73-437f-8794-b289be2d0e1f at <https://api.enterprise.githubcopilot.com/chat/completions> finished with 200 status after 638.2802089999896ms

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 11:39:26.167
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[streamMessages] message 0 returned. finish reason: [stop]

Video shows a faster load which "only" took ~3 minutes:

smt8_2026-08-10_12-50-04.mp4

Not sure what changed in Internet or whether it depends on the Moon position.

Below linked is the full log file. This time I see more interesting entries:

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 12:48:52.710
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 12:51:34.413
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[fetcher] Request to <https://telemetry.enterprise.githubcopilot.com/telemetry> failed, attempting fallback. Error [TypeError]: fetch failed
    at Object.processResponse (/snapshot/copilot-language-server-internal/dist/main.js:302:32970)
    at /snapshot/copilot-language-server-internal/dist/main.js:302:39314
    at node:internal/process/task_queues:149:7
    at AsyncResource.runInAsyncScope (node:async_hooks:214:14)
    at AsyncResource.runMicrotask (node:internal/process/task_queues:146:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {
  code: 'UND_ERR_SOCKET',
  syscall: undefined,
  errno: undefined,
  [cause]: SocketError: HTTP/2: "GOAWAY" frame received with code 0
      at ClientHttp2Session.onHttp2SessionGoAway (/snapshot/copilot-language-server-internal/dist/main.js:213:4264)
      at ClientHttp2Session.emit (node:events:519:28)
      at Http2Session.onGoawayData (node:internal/http2/core:748:11) {
    code: 'UND_ERR_SOCKET',
    socket: {
      localAddress: '10.206.48.60',
      localPort: 56286,
      remoteAddress: '140.82.112.21',
      remotePort: 443,
      remoteFamily: 'IPv4',
      timeout: undefined,
      bytesWritten: 522,
      bytesRead: 3407
    }
  }
}

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 12:51:34.413
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[fetcher] Request to <https://dc.services.visualstudio.com/v2/track> failed, attempting fallback. Error [TypeError]: fetch failed
    at Object.processResponse (/snapshot/copilot-language-server-internal/dist/main.js:302:32970)
    at /snapshot/copilot-language-server-internal/dist/main.js:302:39314
    at node:internal/process/task_queues:149:7
    at AsyncResource.runInAsyncScope (node:async_hooks:214:14)
    at AsyncResource.runMicrotask (node:internal/process/task_queues:146:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {
  code: 'ECONNRESET',
  syscall: 'read',
  errno: -104,
  [cause]: Error: read ECONNRESET
      at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) {
    errno: -104,
    code: 'ECONNRESET',
    syscall: 'read'
  }
}

!ENTRY org.eclipse.lsp4e 1 0 2026-08-10 12:51:34.479
!MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

slow_model_load.log

Activity

  1. jdneo commented on Aug 11, 2026

    @jdneo
    Member

    You mean this is stable reproducible?

  2. iloveeclipse commented on Aug 11, 2026

    @iloveeclipse
    ContributorAuthor

    On my site, yes, at least two days before. I will try again today. Basically the effect is, that I have to wait some minutes after IDE start to use Chat. Didn't happened with 0.20.

  3. iloveeclipse commented on Aug 11, 2026

    @iloveeclipse
    ContributorAuthor

    Just tried few times. Today tried with Claude Sonnet 4.6 instead of Claude Opus 4.8, doesn't make a difference. Already started Eclipse, running since yesterday: Chat answers immediately. Eclipse started fresh: first attempt to "/explain" small 100 lines shell file: ~1 minute. Started again, asked about other, a bit bigger Java file (300 lines): hangs for over 12 minutes. Again, if it hangs, "models" on the preference page don't show up.

    Yet again different log entries (I've given up after 10 minutes and tried to cancel). Note that the stack trace indicates that the preference page tried to update itself after it was closed (I've opened and closed that to validate whether the models were loaded or not).

    !ENTRY org.eclipse.lsp4e 1 0 2026-08-11 08:18:36.049
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-11 08:31:45.074
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[fetcher] Request to <https://dc.services.visualstudio.com/v2/track> failed, attempting fallback. Error [TypeError]: fetch failed
        at Object.processResponse (/snapshot/copilot-language-server-internal/dist/main.js:302:32970)
        at /snapshot/copilot-language-server-internal/dist/main.js:302:39314
        at node:internal/process/task_queues:149:7
        at AsyncResource.runInAsyncScope (node:async_hooks:214:14)
        at AsyncResource.runMicrotask (node:internal/process/task_queues:146:8)
        at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {
      code: 'ECONNRESET',
      syscall: 'read',
      errno: -104,
      [cause]: Error: read ECONNRESET
          at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) {
        errno: -104,
        code: 'ECONNRESET',
        syscall: 'read'
      }
    }
    
    !ENTRY org.eclipse.ui 4 0 2026-08-11 08:31:45.118
    !MESSAGE Unhandled event loop exception
    !STACK 0
    org.eclipse.swt.SWTException: Widget is disposed
    	at org.eclipse.swt.SWT.error(SWT.java:4950)
    	at org.eclipse.swt.SWT.error(SWT.java:4865)
    	at org.eclipse.swt.SWT.error(SWT.java:4836)
    	at org.eclipse.swt.widgets.Widget.error(Widget.java:598)
    	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:513)
    	at org.eclipse.swt.widgets.Button.setEnabled(Button.java:1374)
    	at com.microsoft.copilot.eclipse.ui.preferences.ByokPreferencePage.refreshButtonsEnabled(ByokPreferencePage.java:503)
    	at com.microsoft.copilot.eclipse.ui.preferences.ByokPreferencePage.setProviderLoading(ByokPreferencePage.java:630)
    	at com.microsoft.copilot.eclipse.ui.preferences.ByokPreferencePage.lambda$19(ByokPreferencePage.java:805)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5084)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4549)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038)
    	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:174)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
    	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1415)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1387)
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-11 08:31:45.157
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
  4. iloveeclipse commented on Aug 11, 2026

    @iloveeclipse
    ContributorAuthor

    Tried once again, same file, same model, same question (but I didn't cancelled) - 12 minutes wait time and no error messages, just nothing for 12 minutes.

  5. jdneo commented on Aug 11, 2026

    @jdneo
    Member

    How is your proxy setting in eclipse?

  6. iloveeclipse commented on Aug 11, 2026

    @iloveeclipse
    ContributorAuthor

    How is your proxy setting in eclipse?

    Never set any:

    Image
  7. iloveeclipse commented on Aug 11, 2026

    @iloveeclipse
    ContributorAuthor

    Not sure if a specific server query for obtaining model information is now added to latest CLS shipped with 0.21 plugin, which somehow runs into initialization timeout and prevents agents to work? Any specific log / trace I can enable to see what's going on in CLS while Eclipse is waiting?

  8. jdneo commented on Aug 12, 2026

    @jdneo
    Member

    Ethan Hou (@ethanyhou) Could you please check this issue, pay attention to:

    1. The current mode list implementation
    2. The difference between the CLS version we used between 0.20 & 0.21
  9. iloveeclipse commented on Aug 12, 2026

    @iloveeclipse
    ContributorAuthor

    Another bad side effect of this issue is that Eclipse shutdown is blocked as long as the models info is not fetched yet, via this code:

    "main" #3 [1402430] prio=6 os_prio=0 cpu=11898.93ms elapsed=265.63s tid=0x00007fc61c02def0 nid=1402430 in Object.wait()  [0x00007fc6215fe000]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait0(java.base@25/Native Method)
            - waiting on <no object reference available>
            at java.lang.Object.wait(java.base@25/Object.java:389)
            at org.eclipse.osgi.container.SystemModule.waitForStop(SystemModule.java:178)
            - locked <0x000000060034f410> (a java.util.concurrent.atomic.AtomicReference)
            at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle.waitForStop(EquinoxBundle.java:335)
            at org.eclipse.osgi.launch.Equinox.waitForStop(Equinox.java:217)
            at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:526)
            at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:321)
            at java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.base@25/DirectMethodHandle$Holder)
            at java.lang.invoke.LambdaForm$MH/0x000000002b052800.invoke(java.base@25/LambdaForm$MH)
            at java.lang.invoke.LambdaForm$MH/0x000000002b052c00.invokeExact_MT(java.base@25/LambdaForm$MH)
            at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@25/DirectMethodHandleAccessor.java:156)
            at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@25/DirectMethodHandleAccessor.java:104)
            at java.lang.reflect.Method.invoke(java.base@25/Method.java:565)
            at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
            at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
            at org.eclipse.equinox.launcher.Main.run(Main.java:1415)
            at org.eclipse.equinox.launcher.Main.main(Main.java:1387)
    
    
    "Framework stop - Equinox Container: e90a47ee-77d9-41d8-b139-e8d585fd6a8f" #415 [1404968] prio=6 os_prio=0 cpu=120.83ms elapsed=206.24s tid=0x00007fc61f93e350 nid=1404968 waiting on condition  [0x00007fc58813d000]
       java.lang.Thread.State: WAITING (parking)
            at jdk.internal.misc.Unsafe.park(java.base@25/Native Method)
            - parking to wait for  <0x0000000684e421d8> (a java.util.concurrent.CompletableFuture$Signaller)
            at java.util.concurrent.locks.LockSupport.park(java.base@25/LockSupport.java:223)
            at java.util.concurrent.CompletableFuture$Signaller.block(java.base@25/CompletableFuture.java:1885)
            at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@25/ForkJoinPool.java:4364)
            at java.util.concurrent.ForkJoinPool.managedBlock(java.base@25/ForkJoinPool.java:4310)
            at java.util.concurrent.CompletableFuture.waitingGet(java.base@25/CompletableFuture.java:1919)
            at java.util.concurrent.CompletableFuture.get(java.base@25/CompletableFuture.java:2093)
            at com.microsoft.copilot.eclipse.ui.chat.services.ChatBaseService.getPersistentFilePath(ChatBaseService.java:125)
            at com.microsoft.copilot.eclipse.ui.chat.services.ChatBaseService.persistUserPreference(ChatBaseService.java:86)
            - locked <0x00000007f9bafde0> (a com.microsoft.copilot.eclipse.ui.chat.services.UserPreferenceService)
            at com.microsoft.copilot.eclipse.ui.chat.services.UserPreferenceService.dispose(UserPreferenceService.java:577)
            at com.microsoft.copilot.eclipse.ui.chat.services.ChatServiceManager.dispose(ChatServiceManager.java:210)
            at com.microsoft.copilot.eclipse.ui.CopilotUi.stop(CopilotUi.java:238)
            at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:908)
            at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
            at java.security.AccessController.doPrivileged(java.base@25/AccessController.java:251)
            at org.eclipse.osgi.internal.framework.BundleContextImpl.stop(BundleContextImpl.java:900)
            at org.eclipse.osgi.internal.framework.EquinoxBundle.stopWorker0(EquinoxBundle.java:1096)
            at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.stopWorker(EquinoxBundle.java:399)
            at org.eclipse.osgi.container.Module.doStop(Module.java:699)
            at org.eclipse.osgi.container.Module.stop(Module.java:557)
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.decStartLevel(ModuleContainer.java:2153)
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:2022)
            - locked <0x00000006000211d0> (a java.lang.Object)
            at org.eclipse.osgi.container.SystemModule.stopWorker(SystemModule.java:281)
            at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.stopWorker(EquinoxBundle.java:225)
            at org.eclipse.osgi.container.Module.doStop(Module.java:699)
            at org.eclipse.osgi.container.Module.stop(Module.java:557)
            at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:212)
            at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:244)
            at java.lang.Thread.runWith(java.base@25/Thread.java:1487)
            at java.lang.Thread.run(java.base@25/Thread.java:1474)
    
  10. iloveeclipse commented on Aug 12, 2026

    @iloveeclipse
    ContributorAuthor

    I'm not sure if there could be any problems with the related code or data or Copilot user sessions / authentication if one runs multiple IDE's at same time (each one starts its own native CLS process as I see it in the process list). I typically have multiple IDE's opened for different projects I'm working on in parallel.

  11. jdneo commented on Aug 13, 2026

    @jdneo
    Member

    Andrey Loskutov (@iloveeclipse) That's a point that I haven't thought.

    What will happen if you work on single eclipse instance?

  12. iloveeclipse commented on Aug 13, 2026

    @iloveeclipse
    ContributorAuthor

    What will happen if you work on single eclipse instance?

    Just tried this, checked before that no copilot LS server instances running (just in case) - no success.

    Here are some log entries which might be related?

    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-08-13 07:07:06.625
    !MESSAGE [Info] Starting language server with binary lsp agent.
    
    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-08-13 07:07:06.628
    !MESSAGE [Info] Found native binary in fragment bundle: com.microsoft.copilot.eclipse.core.agent.linux.x64
    
    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-08-13 07:07:06.644
    !MESSAGE [Info] Binary agent started successfully.
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:09.270
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[ripgrep] Set GITHUB_COPILOT_RIPGREP_PATH_OVERRIDE=/home/aloskuto/.cache/pkg/f2ee496a39139b8d9ad9408081217a55f1382cef4950100565d147d247364856/rg
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:09.270
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[lsp] GitHub Copilot Language Server 1.527.0 initialized
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:09.270
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[ripgrep] Resolved ripgrep path: /home/aloskuto/.cache/pkg/f2ee496a39139b8d9ad9408081217a55f1382cef4950100565d147d247364856/rg
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:14.044
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:14.044
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 2 0 2026-08-13 07:07:14.045
    !MESSAGE [LS:GitHub Copilot Language Server][Warning]	[default] Policy watcher not available - continuing without policy watching: Unsupported platform
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:16.928
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[UndiciFetcher] HTTP settings changed; resetting Undici dispatchers. {
      proxy: 'none',
      noProxyCount: 0,
      proxyStrictSSL: true,
      hasProxyAuthorization: false,
      hasProxyKerberosServicePrincipal: false
    }
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:16.932
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:17.050
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[certificates] Removed 1 expired certificates
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:17.050
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[certificates] Removed 1 expired certificates
    
    !ENTRY org.eclipse.lsp4e 2 0 2026-08-13 07:07:17.051
    !MESSAGE [LS:GitHub Copilot Language Server][Warning]	[UndiciFetcher] Undici fetch timed out. {
      target: 'https://copilot-telemetry.githubusercontent.com',
      timeout: 5000
    }
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:17.051
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[UndiciFetcher] Root certificate set changed; resetting Undici dispatchers. { certificateCount: 293 }
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:17.051
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[certificates] Removed 1 expired certificates
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:17.479
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[GithubAvailableEmbeddingTypes] Got embeddings. Primary: metis-1024-I16-Binary. Deprecated: 
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.238
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[CopilotMCP] MCP state changed from false to true
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.238
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AutoModelService] Auto model cache cleared due to token update
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.242
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.242
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.242
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.242
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.243
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[BackgroundAgent] GitHub identity changed, clearing cached sessions {
      hadPrevious: false,
      hasCurrent: true,
      cachedSessionCount: 0,
      remoteDelegateCount: 0
    }
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.260
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:20:37.014
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:20:38.405
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[agentPrompt] Rendering fresh global context for conversation/turn 6c7e09ce-8674-4e91-9ea4-0df7e5e3f126/68af0718-ab63-499b-a318-938bc20142c1
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:20:42.757
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[fetchChat] Request 7c3fcc94-9cd9-491a-a7a1-2b48e4342af7 at <https://api.enterprise.githubcopilot.com/responses> finished with 200 status after 4281.428549000062ms
    

    Between these two messages below Copilot Chat was not reacting on the prompt and was waiting for 13 minutes:

    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:07:19.260
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
    !ENTRY org.eclipse.lsp4e 1 0 2026-08-13 07:20:37.014
    !MESSAGE [LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session
    
  13. jdneo commented on Aug 14, 2026

    @jdneo
    Member

    What if set a system level env variable GH_COPILOT_USE_HELIX_FETCHER=true?

  14. iloveeclipse commented on Aug 28, 2026

    @iloveeclipse
    ContributorAuthor

    What if set a system level env variable GH_COPILOT_USE_HELIX_FETCHER=true?

    The "models" preference page seem to load fast, but I've got UI freeze while switching from "agent" to "ask" mode in the Chat view even before being able to ask something :-(

    "main" #3 [983119] prio=6 os_prio=0 cpu=18020.59ms elapsed=229.00s tid=0x00007febc802ebf0 nid=983119 waiting on condition  [0x00007febcfd22000]
       java.lang.Thread.State: WAITING (parking)
            at jdk.internal.misc.Unsafe.park(java.base@25/Native Method)
            - parking to wait for  <0x00000004b758d838> (a java.util.concurrent.CompletableFuture$Signaller)
            at java.util.concurrent.locks.LockSupport.park(java.base@25/LockSupport.java:223)
            at java.util.concurrent.CompletableFuture$Signaller.block(java.base@25/CompletableFuture.java:1885)
            at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@25/ForkJoinPool.java:4364)
            at java.util.concurrent.ForkJoinPool.managedBlock(java.base@25/ForkJoinPool.java:4310)
            at java.util.concurrent.CompletableFuture.waitingGet(java.base@25/CompletableFuture.java:1919)
            at java.util.concurrent.CompletableFuture.get(java.base@25/CompletableFuture.java:2093)
            at com.microsoft.copilot.eclipse.ui.chat.services.ChatBaseService.getPersistentFilePath(ChatBaseService.java:125)
            at com.microsoft.copilot.eclipse.ui.chat.services.ChatBaseService.persistUserPreference(ChatBaseService.java:86)
            - locked <0x000000045fbdde68> (a com.microsoft.copilot.eclipse.ui.chat.services.UserPreferenceService)
            at com.microsoft.copilot.eclipse.ui.chat.services.UserPreferenceService.setActiveChatMode(UserPreferenceService.java:279)
            at com.microsoft.copilot.eclipse.ui.chat.ActionBar.lambda$9(ActionBar.java:514)
            at com.microsoft.copilot.eclipse.ui.chat.ActionBar$$Lambda/0x0000000077a92800.accept(Unknown Source)
            at com.microsoft.copilot.eclipse.ui.swt.DropdownPopup$2.mouseDown(DropdownPopup.java:507)
            at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
            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)
            at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147)
            at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
            at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038)
            at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
            at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677)
            at org.eclipse.ui.internal.Workbench$$Lambda/0x00000000764f6800.run(Unknown Source)
            at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
            at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
            at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
            at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:174)
            at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
            at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
            at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
            at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
            at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
            at java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.base@25/DirectMethodHandle$Holder)
            at java.lang.invoke.LambdaForm$MH/0x0000000076082800.invoke(java.base@25/LambdaForm$MH)
            at java.lang.invoke.LambdaForm$MH/0x0000000076082c00.invokeExact_MT(java.base@25/LambdaForm$MH)
            at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@25/DirectMethodHandleAccessor.java:156)
            at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@25/DirectMethodHandleAccessor.java:104)
            at java.lang.reflect.Method.invoke(java.base@25/Method.java:565)
            at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
            at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
            at org.eclipse.equinox.launcher.Main.run(Main.java:1415)
            at org.eclipse.equinox.launcher.Main.main(Main.java:1387)
    

    I also noticed there is this process using 100% CPU

        PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                       
     983582 aloskuto  20   0   24.0g   2.6g  58624 R 100.3   1.2   8:05.89 copilot-languag 
    

    This is the process started by Eclipse:

    eclipse/configuration/org.eclipse.osgi/1232/0/.cp/copilot-agent/copilot-language-server --stdio
    
  15. iloveeclipse commented on Aug 28, 2026

    @iloveeclipse
    ContributorAuthor

    Note: the CPU load by copilot-language-server process is not related to the GH_COPILOT_USE_HELIX_FETCHER variable, I've simply not noticed before that, but I see that correlates with the current problem of Chat "hanging".

    Pstack shows this:

    Thread 14 (Thread 0x7ff6997fb640 (LWP 1139175) "copilot-languag"):
    #0  0x00007ffbdcd01e3f in poll () at /lib64/libc.so.6
    #1  0x00007ffbdce86698 in InotifyBackend::start() () at /home/aloskuto/.cache/pkg/f5a86a5231fb33c6c1830649eafd2c9e72647edb45aad753148d08cee6a42dea/watcher.node
    #2  0x00007ffbdce55844 in ??? () at /home/aloskuto/.cache/pkg/f5a86a5231fb33c6c1830649eafd2c9e72647edb45aad753148d08cee6a42dea/watcher.node
    #3  0x00007ffbdd0dbae4 in execute_native_thread_routine () at /lib64/libstdc++.so.6
    #4  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #5  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 13 (Thread 0x7ff69a1fc640 (LWP 1139174) "copilot-languag"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x00007ffbdd0d56c0 in std::condition_variable::wait(std::unique_lock<std::mutex>&) () at /lib64/libstdc++.so.6
    #3  0x00007ffbdce7066f in Debounce::loop() () at /home/aloskuto/.cache/pkg/f5a86a5231fb33c6c1830649eafd2c9e72647edb45aad753148d08cee6a42dea/watcher.node
    #4  0x00007ffbdd0dbae4 in execute_native_thread_routine () at /lib64/libstdc++.so.6
    #5  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #6  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 12 (Thread 0x7ff69abfd640 (LWP 1138489) "gdbus"):
    #0  0x00007ffbdcd01e3f in poll () at /lib64/libc.so.6
    #1  0x00007ffbdc0e81fc in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
    #2  0x00007ffbdc0925a3 in g_main_loop_run () at /lib64/libglib-2.0.so.0
    #3  0x00007ffbb413f46a in gdbus_shared_thread_func.lto_priv () at /lib64/libgio-2.0.so.0
    #4  0x00007ffbdc0c1762 in g_thread_proxy () at /lib64/libglib-2.0.so.0
    #5  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #6  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 11 (Thread 0x7ff69bfff640 (LWP 1138487) "gmain"):
    #0  0x00007ffbdcd01e3f in poll () at /lib64/libc.so.6
    #1  0x00007ffbdc0e81fc in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
    #2  0x00007ffbdc090713 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
    #3  0x00007ffbdc090761 in glib_worker_main () at /lib64/libglib-2.0.so.0
    #4  0x00007ffbdc0c1762 in g_thread_proxy () at /lib64/libglib-2.0.so.0
    #5  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #6  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 10 (Thread 0x7ffba507a640 (LWP 1138428) "libuv-worker"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000df9f16 in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 9 (Thread 0x7ffba587b640 (LWP 1138427) "libuv-worker"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000df9f16 in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 8 (Thread 0x7ffba7fff640 (LWP 1138426) "libuv-worker"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000df9f16 in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 7 (Thread 0x7ffbb4b41640 (LWP 1138425) "libuv-worker"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000df9f16 in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 6 (Thread 0x7ffbd61fc640 (LWP 1138016) "copilot-languag"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000c8f8db in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 5 (Thread 0x7ffbd6bfd640 (LWP 1138015) "copilot-languag"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000c8f8db in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 4 (Thread 0x7ffbd75fe640 (LWP 1138014) "copilot-languag"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000c8f8db in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 3 (Thread 0x7ffbd7fff640 (LWP 1138013) "copilot-languag"):
    #0  0x00007ffbdcc870da in __futex_abstimed_wait_common () at /lib64/libc.so.6
    #1  0x00007ffbdcc89632 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
    #2  0x0000000000c8f8db in ??? ()
    #3  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #4  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 2 (Thread 0x7ffbdcbff640 (LWP 1138012) "DelayedTaskSche"):
    #0  0x00007ffbdcd0e4c8 in epoll_pwait () at /lib64/libc.so.6
    #1  0x0000000000dfbb56 in ??? ()
    #2  0x0000000001cced26 in ??? ()
    #3  0x0000000000c8fb70 in node::WorkerThreadsTaskRunner::DelayedTaskScheduler::Start()::{lambda(void*)#1}::_FUN(void*) ()
    #4  0x00007ffbdcc8a002 in start_thread () at /lib64/libc.so.6
    #5  0x00007ffbdcd0f070 in clone3 () at /lib64/libc.so.6
    Thread 1 (Thread 0x7ffbdd22b2c0 (LWP 1138009) "copilot-languag"):
    #0  0x00007ffbd5613e23 in ??? ()
    #1  0x00007ffbb580e7ad in ??? ()
    #2  0x000000000000000b in ??? ()
    #3  0x0000000000000000 in ??? ()
    
  16. iloveeclipse commented on Aug 28, 2026

    @iloveeclipse
    ContributorAuthor

    I've asked second Copilot instance to check the stack & current Copilot process running and it seems that CPU load is caused by the very big git repo we have (cwd of the language server has 55 GB, 82 566 directories):

    The server takes your git repository root as its watch/index root. A 55 GB / 82 k-directory tree fed into the workspace crawl + context/embedding indexing on the main thread is exactly the kind of workload that turns into a multi-minute (or effectively unbounded) synchronous burn. Note it currently holds only 422 inotify watches for 82 k dirs — i.e. it is still crawling / or repeatedly re-scanning.

    Were there any changes related to the how the workspace watches are managed by Copilot?

  17. iloveeclipse commented on Aug 28, 2026

    @iloveeclipse
    ContributorAuthor

    Were there any changes related to the how the workspace watches are managed by Copilot?

    Looks like this was this one: #373

  18. travkin79 commented on Oct 22, 2026

    @travkin79
    Contributor

    After talking to Andrey Loskutov (@iloveeclipse),

    I could reproduce the issue on my RHEL workstation. After doing some experiments, here are some preliminary analysis results. I think, we have multiple issues here.

    Environment:
    RHEL 9, Eclipse 4.38 (build 4.38.8.v20260910-1358), Java 25 (Adoptium),
    Copilot for Eclipse 0.21.0.202610121610 (nightly), Copilot Language Server (CLS) 1.541.0.
    Workspace with 411 open projects.

    1. NPE when sending a chat message right after startup → chat view stays unresponsive

    Reproduced twice (17:20:55 and 17:31:29, each ~20 s after Eclipse started the CLS):

    java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.protocol.CopilotModel.getCapabilities()" because "activeModel" is null
    	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.createConversation(CopilotLanguageServerConnection.java:277)
    	at com.microsoft.copilot.eclipse.ui.chat.ChatView.onSendInternal(ChatView.java:1178)
    	at com.microsoft.copilot.eclipse.ui.chat.ChatView.lambda$1(ChatView.java:227)
    	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5084)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4549)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038)
    	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:174)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
    	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1415)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1387)
    

    Timeline from the LSP4E trace (session started 17:31):

    • 17:31:23.760 copilot/models sent → answered 17:31:25.636
    • 17:31:26.365 copilot/byok/listModels sent (twice) → answered 17:31:30.724 ({"models":[]})
    • 17:31:29.468 NPE (user pressed Send)

    No conversation/create or conversation/turn request was ever sent to the CLS. The chat view
    gave no answer, even after the CLS was idle again (~13 min later). All other requests from the
    plugin were answered by the CLS.

    2. CLS process at ~100 % CPU for minutes after startup

    • copilot-language-server uses ~100 % of one core (RES ~1 GB) for ~13 minutes after start, then
      drops below 1 %. This happens even when no chat request is sent.
    • In a few Eclipse sessions, the CLS answered every request in the LSP trace, most within 1–2 s and the slowest within 6–9 s
      (customization lists, BYOK model list). copilot/models was answered within ~2 s. After CLS finished its busy work, shutdown was
      answered in 24 ms.

    3. All 411 projects are sent to the CLS as workspace folders, probably handled twice

    • initialize contains 411 workspaceFolders (73 KB request), and workspace/didChangeWorkspaceFolders
      sends the same 411 folders again as added directly after initialized.
    • conversation/templates, conversation/modes, copilot/customAgent/list, copilot/customSkill/list,
      copilot/customPrompt/list, copilot/customInstruction/list each carry the full list (~70 KB per request).
    • Two URI formats are used for the same folders: file:///…/Project/ (in initialize,
      conversation/templates) and file:/…/Project (in the other requests).
    • copilot/customInstruction/list returned 52 project-level .github/copilot-instructions.md files.

    4. CLS processes outliving Eclipse / extra CLS started during shutdown

    • After closing and restarting Eclipse, two copilot-language-server processes were running at
      the same time, both at ~100 % CPU. The one from the closed Eclipse instance ended later.
    • During one IDE shutdown (17:28:12) LSP4E logged
      ExecutionException occurred during shutdown of EndpointProxy … java.io.IOException: Stream closed,
      and in the same millisecond range the plugin logged
      Starting language server with binary lsp agent. / Binary agent started successfully.,
      i.e. a new CLS was started while Eclipse was shutting down.
  19. iloveeclipse commented on Oct 23, 2026

    @iloveeclipse
    ContributorAuthor

    Note: I do not observe same 10+ minutes blocking in a different workspace, which contains ~350 projects with much more files (100.000 vs 150.000), there is almost no blocking.

    The main difference between good and bad workspace is, that in the "bad" workspace (10+ minutes blocking) all 400+ projects are in a single but very big git repository which also has lot of symbolic links (e.g. for bazel output).

    Without links:
    find . -type f | wc -l: 458.872

    With links:
    find -L . -type f | wc -l: 5.881.095

    The "good" workspace has ~10 different git repos with 357.763 files overall (no symbolic links).

  20. travkin79 commented on Oct 23, 2026

    @travkin79
    Contributor

    Even in the "bad" workspace, I do not always observe the 10+ minutes blocking. If I send a copilot request quickly, it seems to work, but the CLS process becomes busy for 10+ minutes anyway, the process seems to begin its work just a little later and that work happens even without me sending any copilot request.

  21. travkin79 commented on Oct 23, 2026

    @travkin79
    Contributor

    I reproduced this on RHEL 9 with a workspace of ~400 Eclipse projects from one large Git repository
    (plugin 0.21.0, CLS 1.527.0). I've created some PRs that make the situation better, but it seems, the bug fix needs to be implemented on CLS side.

    Observations

    • Right after initialize (~400 workspace folders) and the following workspace/didChangeWorkspaceFolders, the
      CLS answers the model and customInstruction/list requests, then produces no output for ~8 minutes. A
      conversation/create and byok/listApiKeys sent meanwhile are only answered after that.
    • The CLS uses 100 % of one core. strace -f -c shows no file system crawling (no getdents64, openat,
      inotify_add_watch during the busy phase), only futex/mmap/munmap/madvise and almost no epoll_pwait:
      synchronous JavaScript blocking the Node event loop, with GC churn.
    • A fresh workspace with ~60 projects from the same repository: the same requests, chat answered after ~7 s.
      ~7× fewer projects -> ~70× less time, i.e. super-linear in the number of workspace folders.
    • While the CLS is busy, closing Eclipse hangs in UserPreferenceService.dispose() on conversation/persistence
      (answered after 11 min 41 s); shutdown/exit are sent only afterwards. A busy CLS does not react to them
      anyway, so it can outlive Eclipse and keep the CPU busy.
    • 0.21.0 differs from 0.20 here: Remove semantic workspace search integration #373 removed the workspaceFolders() override, so LSP4E now announces every
      project instead of only the workspace root.

    CLS side (from the minified dist/main.js of @github/copilot-language-server 1.527.0 and 1.541.0)

    Class names are preserved in the bundle. The likely hot path:

    1. WorkspaceLifecycleManager.onWorkspacesAdded calls await listener.didAddWorkspace(folder) for every
      listener and every added folder.
    2. The listener registered by PromptService ignores the folder and calls rewatchAll().
    3. rewatchAll() calls rewatch(type) for each of 5 customization file types
      (agent, skill, prompt, instructions, hook).
    4. rewatch() calls currentWorkspacePaths(), resolvePatterns(...) and watcher.watch(...).
      currentWorkspacePaths() sorts all folders and checks each one against all others for nesting: O(N²).

    For N folders that is about N × 5 × O(N²) work, all synchronous (await on non-I/O work only yields
    microtasks), so the event loop is blocked and no other request is processed.

    Suggestions for the CLS:

    • Handle added folders as one batch instead of one didAddWorkspace call per folder.
    • In PromptService, debounce/coalesce rewatchAll() or only add watches for the new folder.
    • Cache currentWorkspacePaths() / resolved patterns between calls.

    This code path is unchanged in CLS 1.541.0 (used on main).

    PRs

    These complement #452 – #455 (no UI freezes / shutdown hangs while the CLS is busy), which do not address the busy
    CLS itself.

    FYI Andrey Loskutov (@iloveeclipse), #504 solves the 10+ minutes hang for us, but might require some more tests.

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

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions