Skip to content

Edge: Operation timed out on evaluate() #1919

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
fipro78 opened this issue Mar 19, 2025 · 3 comments · Fixed by #2019
Closed

Edge: Operation timed out on evaluate() #1919

fipro78 opened this issue Mar 19, 2025 · 3 comments · Fixed by #2019
Labels
edge Edge Browser

Comments

@fipro78
Copy link

fipro78 commented Mar 19, 2025

Describe the bug
I started an application that contains a RichTextEditor and get an error on startup:

org.eclipse.swt.SWTException: Waiting for Edge operation to terminate timed out
	at org.eclipse.swt.browser.Edge.createTimeOutException(Edge.java:525)
	at org.eclipse.swt.browser.Edge.processOSMessagesUntil(Edge.java:520)
	at org.eclipse.swt.browser.Edge.callAndWait(Edge.java:287)
	at org.eclipse.swt.browser.Edge.evaluate(Edge.java:902)
	at org.eclipse.swt.browser.WebBrowser.evaluate(WebBrowser.java:405)
	at org.eclipse.swt.browser.Browser.evaluate(Browser.java:665)
	at org.eclipse.swt.browser.Browser.evaluate(Browser.java:614)
	at org.eclipse.nebula.widgets.richtext.RichTextEditor$3.completed(RichTextEditor.java:284)
	at org.eclipse.swt.browser.Edge.lambda$45(Edge.java:1109)
	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:4094)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3710)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:165)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
	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.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:607)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1492)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1465)

Might be a duplicate of #1771

To Reproduce

  • Checkout https://github.com/EclipseNebula/nebula
  • Locate org.eclipse.nebula.widgets.richtext.example
  • Open the file org.eclipse.nebula.widgets.richtext.example.RichTextEditorExample
  • Run the main method

Note:
You first need to locally fix org.eclipse.nebula.widgets.richtext.RichTextEditor#setBounds(int, int, int , int) and replace line 757 with

super.setBounds(new Rectangle(newX, newY, newWidth, newHeight));

The call stack in SWT Control was changed which now leads to a StackOverflowError as reported in EclipseNebula/nebula#631. While trying to fix this, I came across this issue. I need to find a way to verify if the fix works before I actually can push it.

Expected behavior
A shell should open and show the RichTextEditor.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment:

  1. Select the platform(s) on which the behavior is seen:
    • All OS
    • Windows
    • Linux
    • macOS
  1. Additional OS info (e.g. OS version, Linux Desktop, etc)

  2. JRE/JDK version

Version since
Eclipse or SWT version since when the behavior is seen [e.g. 4.23]

Workaround (or) Additional context
Add any other context about the problem here.
Any known workarounds for the problem?

@sratz sratz added the edge Edge Browser label Mar 19, 2025
@yuriypalych
Copy link

Hi colleagues
I upgraded my Eclipse to v.4.35.0.20250306-0811 and now I have similar issue:

org.eclipse.swt.SWTException: Waiting for Edge operation to terminate timed out
	at org.eclipse.swt.browser.Edge.createTimeOutException(Edge.java:525)
	at org.eclipse.swt.browser.Edge.processOSMessagesUntil(Edge.java:520)
	at org.eclipse.swt.browser.Edge$WebViewProvider.getWebViewWrapper(Edge.java:409)
	at org.eclipse.swt.browser.Edge$WebViewProvider.getWebView(Edge.java:426)
	at org.eclipse.swt.browser.Edge.getUrl(Edge.java:944)
	at org.eclipse.swt.browser.Browser.getUrl(Browser.java:771)
	at org.eclipse.ui.internal.browser.BrowserViewer.getURL(BrowserViewer.java:865)
	at org.eclipse.ui.internal.browser.BrowserViewer.navigate(BrowserViewer.java:649)
	at org.eclipse.ui.internal.browser.BrowserViewer.setURL(BrowserViewer.java:709)
	at org.eclipse.ui.internal.browser.BrowserViewer.setURL(BrowserViewer.java:315)
	at org.eclipse.ui.internal.browser.WebBrowserEditor.createPartControl(WebBrowserEditor.java:80)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:158)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:365)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:977)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:939)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:312)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:203)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:90)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:59)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
	at org.eclipse.ui.internal.WorkbenchContributionFactory.create(WorkbenchContributionFactory.java:46)
	at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:134)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:991)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:658)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:762)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:727)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:711)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.lambda$0(PartServiceImpl.java:105)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4853)
	at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
	at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:206)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:201)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
	at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:131)
	at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:73)
	at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44)
	at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
	at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424)
	at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElementGen(ElementContainerImpl.java:168)
	at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:187)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:661)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:625)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:796)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1268)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3228)
	at org.eclipse.ui.internal.WorkbenchPage.lambda$11(WorkbenchPage.java:3118)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3116)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3086)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3069)
	at org.eclipse.ui.internal.browser.InternalBrowserEditorInstance.openURL(InternalBrowserEditorInstance.java:52)
	at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil.lambda$2(OpenBrowserUtil.java:66)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil.internalOpen(OpenBrowserUtil.java:54)
	at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil.lambda$0(OpenBrowserUtil.java:39)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4853)
	at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil.open(OpenBrowserUtil.java:39)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover$1.handleExternalLink(JavadocHover.java:682)
	at org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks$1.changing(JavaElementLinks.java:661)
	at org.eclipse.swt.browser.Edge.handleNavigationStarting(Edge.java:1025)
	at org.eclipse.swt.browser.Edge.handleNavigationStarting(Edge.java:1007)
	at org.eclipse.swt.browser.Edge.lambda$5(Edge.java:238)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3705)
	at org.eclipse.jface.internal.text.html.BrowserInformationControl.setVisible(BrowserInformationControl.java:357)
	at org.eclipse.jface.text.AbstractInformationControlManager.showInformationControl(AbstractInformationControlManager.java:1240)
	at org.eclipse.jface.text.TextViewerHoverManager.showInformationControl(TextViewerHoverManager.java:276)
	at org.eclipse.jface.text.AbstractInformationControlManager.internalShowInformationControl(AbstractInformationControlManager.java:1191)
	at org.eclipse.jface.text.AbstractInformationControlManager.presentInformation(AbstractInformationControlManager.java:1120)
	at org.eclipse.jface.text.AbstractHoverInformationControlManager.presentInformation(AbstractHoverInformationControlManager.java:884)
	at org.eclipse.jface.text.TextViewerHoverManager.doPresentInformation(TextViewerHoverManager.java:237)
	at org.eclipse.jface.text.TextViewerHoverManager.lambda$3(TextViewerHoverManager.java:227)
	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:4094)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3710)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:668)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:576)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:178)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
	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:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:607)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1492)

amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 1, 2025
This commit cotributes to executing the registered listeners of Edge
browser on Browser callbacks in a asynchronous fashion making sure no
WebView related task is executed while a WebView callback is
already executing making sure there's no deadlock.

contributes to
eclipse-platform#1771 and
eclipse-platform#1919
amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 1, 2025
This commit cotributes to executing the registered listeners of Edge
browser on Browser callbacks in a asynchronous fashion making sure no
WebView related task is executed while a WebView callback is
already executing making sure there's no deadlock.

contributes to
eclipse-platform#1771 and
eclipse-platform#1919
amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 2, 2025
This commit cotributes to executing the registered listeners of Edge
browser on Browser callbacks in a asynchronous fashion making sure no
WebView related task is executed while a WebView callback is
already executing making sure there's no deadlock.

contributes to
eclipse-platform#1771 and
eclipse-platform#1919
fedejeanne pushed a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 3, 2025
This commit cotributes to executing the registered listeners of Edge
browser on Browser callbacks in a asynchronous fashion making sure no
WebView related task is executed while a WebView callback is
already executing making sure there's no deadlock.

contributes to
eclipse-platform#1771 and
eclipse-platform#1919
fedejeanne pushed a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 3, 2025
This commit cotributes to executing the registered listeners of Edge
browser on Browser callbacks in a asynchronous fashion making sure no
WebView related task is executed while a WebView callback is
already executing making sure there's no deadlock.

contributes to
eclipse-platform#1771 and
eclipse-platform#1919
amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 8, 2025
This commit cotributes to executing the registered listeners of Edge
browser on Browser callbacks in a asynchronous fashion making sure no
WebView related task is executed while a WebView callback is
already executing making sure there's no deadlock.

contributes to
eclipse-platform#1771 and eclipse-platform#1919
amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 8, 2025
This commit cotributes to replicating the behaviour of Edge:evaluate as
it is in WebKit - it must not wait for the execution of script to obtain
the result, in case evaluate is called inside a WebView callback. This
commit also makes sure that OpenWindowListeners are execute
synchronously or asynchronously depending on if the
handleNewWindowRequested is called from the evaluate script. Moreover,
this enables all the tests which were failing because of Edge:evaluate
limitations.

contributes to
eclipse-platform#1771 and eclipse-platform#1919
fedejeanne pushed a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 9, 2025
This commit cotributes to replicating the behaviour of Edge:evaluate as
it is in WebKit - it must not wait for the execution of script to obtain
the result, in case evaluate is called inside a WebView callback. This
commit also makes sure that OpenWindowListeners are execute
synchronously or asynchronously depending on if the
handleNewWindowRequested is called from the evaluate script. Moreover,
this enables all the tests which were failing because of Edge:evaluate
limitations.

contributes to
eclipse-platform#1771 and
eclipse-platform#1919
amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 9, 2025
This commit cotributes to replicating the behaviour of Edge:evaluate as
it is in WebKit - it must not wait for the execution of script to obtain
the result, in case evaluate is called inside a WebView callback. This
commit also makes sure that OpenWindowListeners are execute
synchronously or asynchronously depending on if the
handleNewWindowRequested is called from the evaluate script. Moreover,
this enables all the tests which were failing because of Edge:evaluate
limitations.

contributes to
eclipse-platform#1771 and eclipse-platform#1919
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Apr 9, 2025
This commit cotributes to replicating the behaviour of Edge:evaluate as
it is in WebKit - it must not wait for the execution of script to obtain
the result, in case evaluate is called inside a WebView callback. This
commit also makes sure that OpenWindowListeners are execute
synchronously or asynchronously depending on if the
handleNewWindowRequested is called from the evaluate script. Moreover,
this enables all the tests which were failing because of Edge:evaluate
limitations.

contributes to
eclipse-platform#1771 and eclipse-platform#1919
amartya4256 added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 9, 2025
This commit cotributes to replicating the behaviour of Edge:evaluate as
it is in WebKit - it must not wait for the execution of script to obtain
the result, in case evaluate is called inside a WebView callback. This
commit also makes sure that OpenWindowListeners are execute
synchronously or asynchronously depending on if the
handleNewWindowRequested is called from the evaluate script. Moreover,
this enables all the tests which were failing because of Edge:evaluate
limitations.

contributes to
eclipse-platform#1771 and eclipse-platform#1919
fedejeanne pushed a commit that referenced this issue Apr 9, 2025
This commit cotributes to replicating the behaviour of Edge:evaluate as
it is in WebKit - it must not wait for the execution of script to obtain
the result, in case evaluate is called inside a WebView callback. This
commit also makes sure that OpenWindowListeners are execute
synchronously or asynchronously depending on if the
handleNewWindowRequested is called from the evaluate script. Moreover,
this enables all the tests which were failing because of Edge:evaluate
limitations.

contributes to
#1771 and #1919
fedejeanne added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 15, 2025
fedejeanne added a commit to vi-eclipse/eclipse.platform.swt that referenced this issue Apr 15, 2025
Add a test to it. The test is currently deactivated for Linux (see
eclipse-platform#2021)

Fixes eclipse-platform#1919
@fedejeanne
Copy link
Contributor

fedejeanne commented Apr 15, 2025

@yuriypalych / @fipro78 this should be fixed for Windows (Edge and IE) by #2019 .

Could any of you guys kindly check on Linux and see if the same error is reproducible? I noticed while adding a test that the test fails on Linux (see #2021 ) so it might be that this very issue affects Linux too. I just haven't found the time to confirm it yet so any help would be appreciated.

@yuriypalych
Copy link

@yuriypalych / @fipro78 this should be fixed for Windows (Edge and IE) by #2019 .

Many thanks for the info, @fedejeanne

Could any of you guys kindly check on Linux and see if the same error is reproducible?

Unfortunately I use Windows only, cannot check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
edge Edge Browser
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants