Repository navigation
CefSharp.WinForms.Example.netcore crashes when popup window #4656
Description
Activity
This should really be fixed
upstreaminCEF.- addedupstreamThese issues require fixing in the Chromium Embedded Framework(CEF) or Chromium.These issues require fixing in the Chromium Embedded Framework(CEF) or Chromium.
on Dec 22, 2023 What is the call stack for the exception?
Since Dispose is called in DoClose, shouldn't it be fixed on the CefSharp side, not on the cef side?
The call stack for the exception is as follows:
libcef.dll!AlloyBrowserHostImpl::DestroyBrowser() Line 600 C++ libcef.dll!AlloyBrowserHostImpl::CloseContents(content::WebContents * source) Line 1040 C++ [Inline Frame] libcef.dll!base::OnceCallback<void ()>::Run() Line 154 C++ libcef.dll!base::TaskAnnotator::RunTaskImpl(base::PendingTask & pending_task) Line 201 C++ [Inline Frame] libcef.dll!base::TaskAnnotator::RunTask(perfetto::StaticString event_name, base::PendingTask & pending_task, base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl::<lambda_0> && args) Line 89 C++ [Inline Frame] libcef.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow * continuation_lazy_now) Line 461 C++ libcef.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() Line 326 C++ libcef.dll!base::MessagePumpForUI::DoRunLoop() Line 214 C++ libcef.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 80 C++ libcef.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool application_tasks_allowed, base::TimeDelta timeout) Line 629 C++ libcef.dll!base::RunLoop::Run(const base::Location & location) Line 136 C++ > [Inline Frame] libcef.dll!CefMainRunner::RunMessageLoop() Line 312 C++ libcef.dll!CefUIThread::ThreadMain() Line 182 C++ libcef.dll!base::`anonymous namespace'::ThreadFunc(void * params) Line 133 C++ kernel32.dll!00007ff81e64257d() Unknown ntdll.dll!00007ff81feeaa58() UnknownSince Dispose is called in DoClose, shouldn't it be fixed on the CefSharp side, not on the cef side?
For me that's just hacking around the issue. Calling
Dispose(which callsCefBrowserHost::CloseBrowser) works most of the time, there's a threading issue which means it throws some of the time. Even if we move the call in the same code, that won't fix user code.The
LifespanHandlerprovided is just a default implementation. You can override the behaviour of the default implementation to workaround the issue in your own code.If the CEF maintainer deems this as won't fix, then we can look at working around the issue.
Is there an existing issue for this?
CefSharp Version
120.1.80
Operating System
Windows 11
Architecture
x64
.Net Version
.Net 6.0
Implementation
WinForms
Reproduction Steps
Expected behavior
Expectations is that it will not crash when you close the popup window
Actual behavior
Regression?
No response
Known Workarounds
Is this due to DoClose in LifeSpanHandler.cs?
Excluding control.Dispose() from InnvokeSyncOnUiThreadIfRequired stops crashing.
Does this problem also occur in the CEF Sample Application
No
Other information
html source
edit source code
CefSharp.WinForms\Handler\LifeSpanhandler.cs
CefSharp.WinForms.Example\BrowserTabUserControl.cs