Test steps
- Open Preferences Dialog (the problem
- Enter "avail" in filter field
Expected result
Tree shows only entries that have associted "available" keyword
Actual result
No filtering at all. 25-100% of CPU core is used.
The result is not very consistent, but is reproduced pretty reliably for current SimRel staging.
Workaround
Resize dialog or remove focus from the filter field, tree will be filtered.
Logs
I've managed to track the problem down to infinite redrawing of Text control:
"main" #1 [259] prio=6 os_prio=31 cpu=61043.14ms elapsed=112.39s tid=0x0000000100c1f310 nid=259 runnable [0x000000016fa40000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Widget.drawRect(Widget.java:813)
at org.eclipse.swt.widgets.Text.drawRect(Text.java:759)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6246)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Display.applicationNextEventMatchingMask(Display.java:5569)
at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5970)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSApplication.nextEventMatchingMask(NSApplication.java:92)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3992)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:819)
at org.eclipse.jface.window.Window.open(Window.java:799)
at org.eclipse.ui.internal.handlers.ShowPreferencePageHandler.execute(ShowPreferencePageHandler.java:58)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:277)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
at java.lang.invoke.LambdaForm$DMH/0x00000f0002138400.invokeVirtual(java.base@23.0.2/LambdaForm$DMH)
at java.lang.invoke.LambdaForm$MH/0x00000f0002139c00.invoke(java.base@23.0.2/LambdaForm$MH)
at java.lang.invoke.Invokers$Holder.invokeExact_MT(java.base@23.0.2/Invokers$Holder)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@23.0.2/DirectMethodHandleAccessor.java:157)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@23.0.2/DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke(java.base@23.0.2/Method.java:580)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:305)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:237)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:484)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:204)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:186)
at org.eclipse.e4.ui.workbench.renderers.swt.cocoa.CocoaUIHandler.runCommand(CocoaUIHandler.java:415)
at org.eclipse.e4.ui.workbench.renderers.swt.cocoa.CocoaUIHandler$1.widgetSelected(CocoaUIHandler.java:280)
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:4651)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1657)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1680)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1665)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1394)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4422)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3998)
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:684)
at org.eclipse.ui.internal.Workbench$$Lambda/0x00000f0001272c38.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@23.0.2/DirectMethodHandle$Holder)
at java.lang.invoke.LambdaForm$MH/0x00000f0001018800.invoke(java.base@23.0.2/LambdaForm$MH)
at java.lang.invoke.LambdaForm$MH/0x00000f0001018c00.invokeExact_MT(java.base@23.0.2/LambdaForm$MH)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@23.0.2/DirectMethodHandleAccessor.java:155)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@23.0.2/DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke(java.base@23.0.2/Method.java:580)
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)
Apparently caused by an unconditional org.eclipse.swt.widgets.Widget.setNeedsDisplay(Widget.java:2150) called from following hypothetical trace:
at org.eclipse.swt.widgets.Widget.setNeedsDisplay(Widget.java:2150)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6212)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSControl.stringValue(NSControl.java:122)
at org.eclipse.swt.widgets.Text.drawInteriorWithFrame_inView_searchfield(Text.java:751)
at org.eclipse.swt.widgets.Text.drawInteriorWithFrame_inView(Text.java:697)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6650)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Widget.drawRect(Widget.java:813)
at org.eclipse.swt.widgets.Text.drawRect(Text.java:759)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6212)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Display.applicationNextEventMatchingMask(Display.java:5589)
at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5990)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSApplication.nextEventMatchingMask(NSApplication.java:92)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4008)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:819)
at org.eclipse.jface.window.Window.open(Window.java:780)
at org.eclipse.ui.internal.handlers.ShowPreferencePageHandler.execute(ShowPreferencePageHandler.java:47)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:271)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
at java.lang.invoke.Invokers$Holder.invokeExact_MT(java.base@25.0.2/Invokers$Holder)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@25.0.2/DirectMethodHandleAccessor.java:158)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@25.0.2/DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke(java.base@25.0.2/Method.java:565)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:305)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:237)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:484)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:204)
at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:386)
at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:363)
I was unable to capture this exact trace with jstack, but it reliably happens in debugger (when the problem is reproducible, because debugger does affect is severely - sometimes it helps with reproduction and other times, eliminates the problem completely).
Tested under this environment:
Eclipse SDK
Version: 2026-06 (4.40)
Build id: I20260411-1800
OS: Mac OS X, v.26.4.1, aarch64 / cocoa
Java vendor: Eclipse Adoptium
Java runtime version: 23.0.2+7
Java version: 23.0.2
Test steps
Expected result
Tree shows only entries that have associted "available" keyword
Actual result
No filtering at all. 25-100% of CPU core is used.
The result is not very consistent, but is reproduced pretty reliably for current SimRel staging.
Workaround
Resize dialog or remove focus from the filter field, tree will be filtered.
Logs
I've managed to track the problem down to infinite redrawing of Text control:
Apparently caused by an unconditional
org.eclipse.swt.widgets.Widget.setNeedsDisplay(Widget.java:2150)called from following hypothetical trace:I was unable to capture this exact trace with jstack, but it reliably happens in debugger (when the problem is reproducible, because debugger does affect is severely - sometimes it helps with reproduction and other times, eliminates the problem completely).
Tested under this environment:
Eclipse SDK
Version: 2026-06 (4.40)
Build id: I20260411-1800
OS: Mac OS X, v.26.4.1, aarch64 / cocoa
Java vendor: Eclipse Adoptium
Java runtime version: 23.0.2+7
Java version: 23.0.2