-
Notifications
You must be signed in to change notification settings - Fork 149
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
Edge Browser freezes indefinitely when launching one Browser from another via a BrowserFunction #669
Comments
The root cause for this behavior is that the WebView2 threading model does simply not allow this: https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/threading-model A potential solution option is to execute whatever code is embedded into a callback in an asynchronous way. But since the current browser API is expected to operate synchronously and return results rather than futures, this may easily break compatibility. At least the Edge browser implementation usually checks for these kinds of deadlocks and throws an exception rather than actually running into a deadlock: Lines 285 to 293 in 863dbe0
At this specific point ( |
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to #669
Fixed with #1378 |
Did you mean to close it with this comment ? |
This contribution fixes Edge browser Deadlock issue on instantiating a new Edge Browser object during a webview callback using async execution. The Implementation follows the pattern similar to how WebKit has been implemented imitating the async behaviour in a sync fashion using Futures and callbacks. contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to eclipse-platform#669
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to #669
Summary
Edge
Browser
freezes indefinitely when launching one Browser ("child" Browser) from another ("parent" Browser) via aBrowserFunction
usingDisplay#syncExec
to create the child Browser. The same behavior is not exhibited when the child Browser is created within aDisplay#asyncExec
call.Also want to note when SWT gets into this waiting state, closing the window does not kill the process. The process will run until killed manually.
Code To Reproduce
Stack Trace
SWT waits indefinitely on the org.eclipse.swt.internal.win32.OS.WaitMessage call below:
Expected behavior
The child Browser opens successfully.
Environment:
Windows 10, also observed on Windows Server 2016
JDK 11.0.14.1
Version since
SWT 3.117-Current (3.123 at the time of writing this)
Known Workarounds
Display#asyncExec
instead ofDisplay#syncExec
to create the child BrowserThe text was updated successfully, but these errors were encountered: