Infinite Text redraw
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Start by reproducing the issue in the Preferences dialog on macOS: enter "avail" in the filter field and observe whether the tree filters while the CPU remains high. Read the SWT code paths named in the stack traces, especially Text.java, Widget.java, and Display.java. Done means filtering works with the field focused and redraw no longer loops or consumes excessive CPU.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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 (if your launcher is built against newer MacOS SDK). 25-100% of CPU core is used (on all SDKs).
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([email protected]/LambdaForm$DMH)
at java.lang.invoke.LambdaForm$MH/0x00000f0002139c00.invoke([email protected]/LambdaForm$MH)
at java.lang.invoke.Invokers$Holder.invokeExact_MT([email protected]/Invokers$Holder)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl([email protected]/DirectMethodHandleAccessor.java:157)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke([email protected]/DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke([email protected]/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([email protected]/DirectMethodHandle$Holder)
at java.lang.invoke.LambdaForm$MH/0x00000f0001018800.invoke([email protected]/LambdaForm$MH)
at java.lang.invoke.LambdaForm$MH/0x00000f0001018c00.invokeExact_MT([email protected]/LambdaForm$MH)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl([email protected]/DirectMethodHandleAccessor.java:155)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke([email protected]/DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke([email protected]/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([email protected]/Invokers$Holder)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl([email protected]/DirectMethodHandleAccessor.java:158)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke([email protected]/DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke([email protected]/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
- Lingua principale
- Java
- Stelle
- 124
- Fork
- 269
- Merge medio
- 2g 2h
- PR unite (30g)
- 70
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di eclipse-platform/eclipse.platform.ui
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
eclipse-platform/eclipse.platform.ui#4125 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
eclipse-platform/eclipse.platform.ui#4016 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
eclipse-platform/eclipse.platform.ui#3892 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
eclipse-platform/eclipse.platform.ui#2687 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
eclipse-platform/eclipse.platform.ui#4487 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di eclipse-platform/eclipse.platform.ui
Issue simili
-
`timer` rule rejects dates the engine acceptsForse già presa @MFA-G l’ha presa oggi. Apertabug ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
camunda/bpmnlint-plugin-camunda-compat#281 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
status: waiting-for-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
AOT compilation fails for derived delete queries returning SetForse già presa @ryujungkyun l’ha presa oggi. Apertastatus: waiting-for-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
spring-projects/spring-data-jpa#4387 ·
I maintainer di solito rispondono entro 3 giorni