Skip to content

[Bug] UI Freezes on editor switch if Chat view has longer conversation #335

Description

@iloveeclipse

Environment

  • OS: RHEL 9.6
  • Eclipse Version: 4.41
  • Plugin Version: 0.19.0.202606300450_nightly

Describe the bug

Start a longer Chat conversation with agent, which is a bit longer as just one question, e.g. refactoring with different stages. Add ~5 files to the context. Once the conversation reaches some amount of displayed code (in my case ~15 questions/prompts & 15 answers/actions), the Chat view starts affecting performance of editor switching, even if it is not visible anymore (Outline is shown instead it in same stack). On each editor switch like in a debug session where different files are opened for the next breakpoint, UI freezes for a second or two.

Typical stack trace shows that Chat view, even if not visible, tries to re-layout itself on every editor switch, freezing UI for that time. Debugging becomes hardly possible, because on every breakpoint hit the UI waits few seconds before debug line is highlighted in the new editor.

Expected behavior

  1. No UI freezes on editor switches, independently how long conversation is in an opened Chat view.
  2. If Chat view is not visible (not on the top of the view stack), it should not re-layout itself, just set a flag that if it becomes visible, it should perform a re-layout.

Stack

eclipse.buildId=4.41.0.I20260701-2300
java.version=25
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64 -data /data/4x_platform_workspace

org.eclipse.ui.monitoring
Info
Thu Jul 02 11:44:22 CEST 2026
Sample at 11:44:22.289 (+0.665s)
Thread 'main' tid=3 (RUNNABLE)

Stack Trace
	at org.eclipse.swt.internal.gtk.OS.pango_layout_get_size(Native Method)
	at org.eclipse.swt.graphics.TextLayout$MetricsAdapter.pango_layout_get_size(TextLayout.java:181)
	at org.eclipse.swt.graphics.TextLayout.getBounds(TextLayout.java:911)
	at org.eclipse.swt.custom.StyledText.computeSize(StyledText.java:1256)
	at org.eclipse.swt.layout.GridData.computeSize(GridData.java:504)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:486)
	at org.eclipse.swt.layout.GridLayout.computeSize(GridLayout.java:168)
	at org.eclipse.swt.widgets.Composite.computeSizeInPixels(Composite.java:269)
	at org.eclipse.swt.widgets.Control.computeSize(Control.java:862)
	at org.eclipse.swt.layout.GridData.computeSize(GridData.java:504)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:486)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:201)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1918)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
	at org.eclipse.swt.widgets.Composite.layout(Composite.java:1221)
	at com.microsoft.copilot.eclipse.ui.chat.ChatView.layout(ChatView.java:1714)
	at com.microsoft.copilot.eclipse.ui.chat.ReferencedFile.setFile(ReferencedFile.java:173)
	at com.microsoft.copilot.eclipse.ui.chat.CurrentReferencedFile.setFile(CurrentReferencedFile.java:92)
	at com.microsoft.copilot.eclipse.ui.chat.services.ReferencedFileService.lambda$6(ReferencedFileService.java:220)
	at com.microsoft.copilot.eclipse.ui.chat.services.ReferencedFileService$$Lambda/0x00000000102b8460.accept(Unknown Source)
	at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect.lambda$1(SideEffect.java:330)
	at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect$$Lambda/0x000000000fb28990.run(Unknown Source)
	at org.eclipse.core.databinding.observable.ObservableTracker.runAndMonitor(ObservableTracker.java:113)
	at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect.update(SideEffect.java:199)
	at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect$PrivateInterface.run(SideEffect.java:349)
	at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:155)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
	at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:159)
	at org.eclipse.jface.databinding.swt.DisplayRealm.lambda$0(DisplayRealm.java:64)
	at org.eclipse.jface.databinding.swt.DisplayRealm$$Lambda/0x000000000f2ba240.run(Unknown Source)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:131)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5068)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4528)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
	at org.eclipse.ui.internal.Workbench$$Lambda/0x000000000f1eb3e0.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:193)
	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@25/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder)
	at java.base@25/java.lang.invoke.LambdaForm$MH/0x000000000f052000.invoke(LambdaForm$MH)
	at java.base@25/java.lang.invoke.LambdaForm$MH/0x000000000f052400.invokeExact_MT(LambdaForm$MH)
	at java.base@25/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:156)
	at java.base@25/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base@25/java.lang.reflect.Method.invoke(Method.java:565)
	at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
	at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
	at app//org.eclipse.equinox.launcher.Main.run(Main.java:1415)
	at app//org.eclipse.equinox.launcher.Main.main(Main.java:1387)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions