Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 568089

Summary: [Chromium] UI thread stuck in Chromium#evaluate
Product: [Eclipse Project] Platform Reporter: Karsten Thoms <karsten.thoms>
Component: SWTAssignee: Platform-SWT-Inbox <platform-swt-inbox>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: P3 CC: akurtakov, niraj.modi
Version: 4.18   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X   
Whiteboard:
Bug Depends on:    
Bug Blocks: 566608, 569095    

Description Karsten Thoms CLA 2020-10-22 00:55:24 EDT
For testing I have enabled Chromium in my platform dev IDE instance. Now the IDE is hanging and waits forever that ChromiumLib.cefswt_eval returns. Not sure what's causing the method to block, but anyway the method call should not block the UI thread.

Would it be possible defer calls to ChromiumLib to a background thread with a (configurable) timeout?


main  Runnable CPU usage on sample: 968ms
  org.eclipse.swt.internal.chromium.lib.ChromiumLib.cefswt_eval(long, String, int, long) ChromiumLib.java (native)
  org.eclipse.swt.browser.Chromium.evaluate(String) Chromium.java:1824
  org.eclipse.swt.browser.WebBrowser.evaluate(String, boolean) WebBrowser.java:406
  org.eclipse.swt.browser.Browser.evaluate(String, boolean) Browser.java:673
  org.eclipse.swt.browser.Browser.evaluate(String) Browser.java:622
  org.eclipse.mylyn.internal.wikitext.ui.editor.MarkupEditor.updatePreview(OutlineItem) MarkupEditor.java:642
  org.eclipse.mylyn.internal.wikitext.ui.editor.MarkupEditor.updatePreview() MarkupEditor.java:629
  org.eclipse.mylyn.internal.wikitext.ui.editor.MarkupEditor.createSourceViewer(Composite, IVerticalRuler, int) MarkupEditor.java:419
  org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(Composite) AbstractTextEditor.java:3373
  org.eclipse.ui.texteditor.StatusTextEditor.createPartControl(Composite) StatusTextEditor.java:64
  org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.createPartControl(Composite) AbstractDecoratedTextEditor.java:454
  org.eclipse.mylyn.internal.wikitext.ui.editor.MarkupEditor.createPartControl(Composite) MarkupEditor.java:452
  org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(IWorkbenchPart, Composite) CompatibilityPart.java:158
  org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(IWorkbenchPart, Composite) CompatibilityEditor.java:96
  org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create() CompatibilityPart.java:365
  jdk.internal.reflect.GeneratedMethodAccessor131.invoke(Object, Object[])
  jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43
  java.lang.reflect.Method.invoke(Object, Object[]) Method.java:566
  org.eclipse.e4.core.internal.di.MethodRequestor.execute() MethodRequestor.java:58
  org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(Class, Object, Class, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList) InjectorImpl.java:964  <2 recursive calls>
  org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(Object, PrimaryObjectSupplier, PrimaryObjectSupplier) InjectorImpl.java:140
  org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(Class, PrimaryObjectSupplier, PrimaryObjectSupplier) InjectorImpl.java:405
  org.eclipse.e4.core.internal.di.InjectorImpl.make(Class, PrimaryObjectSupplier) InjectorImpl.java:332
  org.eclipse.e4.core.contexts.ContextInjectionFactory.make(Class, IEclipseContext) ContextInjectionFactory.java:202
  org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(Bundle, IEclipseContext, IEclipseContext, URI) ReflectionContributionFactory.java:91
  org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(String, IEclipseContext, IEclipseContext) ReflectionContributionFactory.java:60
  org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(String, IEclipseContext) ReflectionContributionFactory.java:42
  org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(MUIElement, Object) ContributedPartRenderer.java:132
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(MUIElement, Object) PartRenderingEngine.java:999
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) PartRenderingEngine.java:659
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(MUIElement) PartRenderingEngine.java:765
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) PartRenderingEngine.java:736
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run() PartRenderingEngine.java:730
  org.eclipse.core.runtime.SafeRunner.run(ISafeRunnable) SafeRunner.java:45
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(MUIElement) PartRenderingEngine.java:714
  org.eclipse.e4.ui.internal.workbench.PartServiceImpl.lambda$0(Event) PartServiceImpl.java:104
  org.eclipse.e4.ui.internal.workbench.PartServiceImpl$$Lambda$264.handleEvent(Event)
  org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(Event) UIEventHandler.java:38
  org.eclipse.e4.ui.services.internal.events.UIEventHandler$$Lambda$191.run()
  org.eclipse.swt.widgets.Synchronizer.syncExec(Runnable) Synchronizer.java:236
  org.eclipse.ui.internal.UISynchronizer.syncExec(Runnable) UISynchronizer.java:133
  org.eclipse.swt.widgets.Display.syncExec(Runnable) Display.java:4992
  org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(Runnable) E4Application.java:219
  org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(Event) UIEventHandler.java:38
  org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(Event, Permission) EventHandlerWrapper.java:205
  org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) EventHandlerTracker.java:203
  org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(Object, Object, int, Object) EventHandlerTracker.java:1
  org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(Set, EventDispatcher, int, Object) EventManager.java:234
  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(int, Object) ListenerQueue.java:151
  org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(Event, boolean) EventAdminImpl.java:132
  org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(Event) EventAdminImpl.java:75
  org.eclipse.equinox.internal.event.EventComponent.sendEvent(Event) EventComponent.java:44
  org.eclipse.e4.ui.services.internal.events.EventBroker.send(String, Object) EventBroker.java:55
  org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(Notification) UIEventPublisher.java:63
  org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(Notification) BasicNotifierImpl.java:424
  org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElementGen(MUIElement) ElementContainerImpl.java:170
  org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(MUIElement) ElementContainerImpl.java:188
  org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(MWindow, MUIElement) ModelServiceImpl.java:659
  org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(MUIElement) ModelServiceImpl.java:623
  org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(MPart) PartServiceImpl.java:786
  org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(MPart) PartServiceImpl.java:400
  org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(MPart, EPartService$PartState) PartServiceImpl.java:1262
  org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(IEditorInput, String, boolean, int, IMemento, boolean) WorkbenchPage.java:3195
  org.eclipse.ui.internal.WorkbenchPage.lambda$9(IEditorPart[], IEditorInput, String, boolean, int, IMemento, boolean, PartInitException[]) WorkbenchPage.java:3100
  org.eclipse.ui.internal.WorkbenchPage$$Lambda$1633.run()
  org.eclipse.swt.custom.BusyIndicator.showWhile(Display, Runnable) BusyIndicator.java:74
  org.eclipse.ui.internal.WorkbenchPage.openEditor(IEditorInput, String, boolean, int, IMemento, boolean) WorkbenchPage.java:3098
  org.eclipse.ui.internal.WorkbenchPage.openEditor(IEditorInput, String, boolean, int) WorkbenchPage.java:3068
  org.eclipse.ui.internal.WorkbenchPage.openEditor(IEditorInput, String) WorkbenchPage.java:3051
  org.eclipse.ui.ide.IDE.openEditorOnFileStore(IWorkbenchPage, IFileStore) IDE.java:1376
  org.eclipse.egit.ui.internal.EgitUiEditorUtils.openEditor(File, IWorkbenchPage) EgitUiEditorUtils.java:173
  org.eclipse.egit.ui.internal.repository.tree.command.OpenInEditorCommand.execute(ExecutionEvent) OpenInEditorCommand.java:31
  org.eclipse.egit.ui.internal.repository.tree.command.OpenCommand.execute(ExecutionEvent) OpenCommand.java:46
  org.eclipse.ui.internal.handlers.HandlerProxy.execute(ExecutionEvent) HandlerProxy.java:283
  org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(IEclipseContext, Map, Event, IEvaluationContext) E4HandlerProxy.java:97
  jdk.internal.reflect.GeneratedMethodAccessor112.invoke(Object, Object[])
  jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43
  java.lang.reflect.Method.invoke(Object, Object[]) Method.java:566
  org.eclipse.e4.core.internal.di.MethodRequestor.execute() MethodRequestor.java:58
  org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(Object, Class, Class, Object, PrimaryObjectSupplier, PrimaryObjectSupplier, boolean, boolean, boolean) InjectorImpl.java:319
  org.eclipse.e4.core.internal.di.InjectorImpl.invoke(Object, Class, Object, PrimaryObjectSupplier, PrimaryObjectSupplier) InjectorImpl.java:253
  org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(Object, Class, IEclipseContext, IEclipseContext, Object) ContextInjectionFactory.java:173
  org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(ExecutionEvent) HandlerServiceHandler.java:156
  org.eclipse.core.commands.Command.executeWithChecks(ExecutionEvent) Command.java:488
  org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(Object, Object) ParameterizedCommand.java:487
  org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(ParameterizedCommand, IEclipseContext) HandlerServiceImpl.java:213
  org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommandInContext(ParameterizedCommand, Event, IEvaluationContext) LegacyHandlerService.java:440
  org.eclipse.egit.ui.internal.CommonUtils.runCommand(String, IStructuredSelection, Map) CommonUtils.java:218
  org.eclipse.egit.ui.internal.CommonUtils.runCommand(String, IStructuredSelection) CommonUtils.java:182
  org.eclipse.egit.ui.internal.repository.RepositoriesView.executeOpenCommand(RepositoryTreeNode) RepositoriesView.java:914
  org.eclipse.egit.ui.internal.repository.RepositoriesView.access$4(RepositoriesView, RepositoryTreeNode) RepositoriesView.java:913
  org.eclipse.egit.ui.internal.repository.RepositoriesView$7.open(OpenEvent) RepositoriesView.java:535
  org.eclipse.jface.viewers.StructuredViewer$2.run() StructuredViewer.java:802
  org.eclipse.core.runtime.SafeRunner.run(ISafeRunnable) SafeRunner.java:45
  org.eclipse.ui.internal.JFaceUtil$$Lambda$102.run(ISafeRunnable)
  org.eclipse.jface.util.SafeRunnable.run(ISafeRunnable) SafeRunnable.java:174
  org.eclipse.jface.viewers.StructuredViewer.fireOpen(OpenEvent) StructuredViewer.java:799
  org.eclipse.jface.viewers.StructuredViewer.handleOpen(SelectionEvent) StructuredViewer.java:1118
  org.eclipse.ui.navigator.CommonViewer.handleOpen(SelectionEvent) CommonViewer.java:454
  org.eclipse.jface.viewers.StructuredViewer$$Lambda$432.handleOpen(SelectionEvent)
  org.eclipse.jface.util.OpenStrategy.fireOpenEvent(SelectionEvent) OpenStrategy.java:275
  org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy, SelectionEvent) OpenStrategy.java:270
  org.eclipse.jface.util.OpenStrategy$1.handleEvent(Event) OpenStrategy.java:310
  org.eclipse.swt.widgets.EventTable.sendEvent(Event) EventTable.java:89
  org.eclipse.swt.widgets.Display.sendEvent(EventTable, Event) Display.java:4385
  org.eclipse.swt.widgets.Widget.sendEvent(Event) Widget.java:1512
  org.eclipse.swt.widgets.Widget.sendEvent(int, Event, boolean) Widget.java:1535
  org.eclipse.swt.widgets.Widget.sendEvent(int, Event) Widget.java:1520
  org.eclipse.swt.widgets.Widget.notifyListeners(int, Event) Widget.java:1324
  org.eclipse.swt.widgets.Display.runDeferredEvents() Display.java:4172
  org.eclipse.swt.widgets.Display.readAndDispatch() Display.java:3789
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run() PartRenderingEngine.java:1157
  org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable) Realm.java:338
  org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(MApplicationElement, IEclipseContext) PartRenderingEngine.java:1046
  org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(MApplicationElement) E4Workbench.java:155
  org.eclipse.ui.internal.Workbench.lambda$3(Display, WorkbenchAdvisor, int[]) Workbench.java:644
  org.eclipse.ui.internal.Workbench$$Lambda$127.run()
  org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable) Realm.java:338
  org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) Workbench.java:551
  org.eclipse.ui.PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) PlatformUI.java:153
  org.eclipse.ui.internal.ide.application.IDEApplication.start(IApplicationContext) IDEApplication.java:152
  org.eclipse.equinox.internal.app.EclipseAppHandle.run(Object) EclipseAppHandle.java:203
  org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Object) EclipseAppLauncher.java:134
  org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Object) EclipseAppLauncher.java:104
  org.eclipse.core.runtime.adaptor.EclipseStarter.run(Object) EclipseStarter.java:401
  org.eclipse.core.runtime.adaptor.EclipseStarter.run(String[], Runnable) EclipseStarter.java:255
  jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) NativeMethodAccessorImpl.java (native)
  jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Object, Object[]) NativeMethodAccessorImpl.java:62
  jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43
  java.lang.reflect.Method.invoke(Object, Object[]) Method.java:566
  org.eclipse.equinox.launcher.Main.invokeFramework(String[], URL[]) Main.java:653
  org.eclipse.equinox.launcher.Main.basicRun(String[]) Main.java:590
  org.eclipse.equinox.launcher.Main.run(String[]) Main.java:1461
Comment 1 Alexander Kurtakov CLA 2021-10-04 04:54:01 EDT
Chromium has been removed via bug 572010 .