MicrosoftEdge / MicrosoftEdge/WebView2Feedback
[Problem/Bug]: Application Crashes on Post call from webview2
@vbryh-msft is already working on this.
Since Jan 19, 2024.
- Dominant language
- PowerShell
- Stars
- 526
- Forks
- 67
- PR merge metrics
- No merged PRs in 30d
Description
What happened?
We have a react application hosted in a webview2 (version 98.0.1108.62) launched from MFC desktop application. Occassionally, the application crashes when making a Post API call using axios library.
Note: We have seen this crash on webview2 version (118.0.2088.69) as well
Below is the call stack. We have address sanitizer configured which reports "Deallocation Of freed memory" exception during the crash.
KernelBase.dll!_RaiseException@16()
OurAppWebView.ocx!__vcasan::OnAsanReport(const char * description, const char * report, bool __throw) Line 600
at D:\a_work\1\s\src\vctools\crt\asan\vcasan\vcasan.cpp(600)
OurAppWebView.ocx!__vcasan::ReportCallback(const char * szReport) Line 324
at D:\a_work\1\s\src\vctools\crt\asan\vcasan\vcasan.cpp(324)
clang_rt.asan_dbg_dynamic-i386.dll!__asan::ScopedInErrorReport::~ScopedInErrorReport(void)
clang_rt.asan_dbg_dynamic-i386.dll!__asan::ReportDoubleFree(unsigned long,struct __sanitizer::BufferedStackTrace *)
clang_rt.asan_dbg_dynamic-i386.dll!__asan::Allocator::Deallocate(void *,unsigned long,unsigned long,struct __sanitizer::BufferedStackTrace *,enum __asan::AllocType)
clang_rt.asan_dbg_dynamic-i386.dll!__asan::asan_free(void *,struct __sanitizer::BufferedStackTrace *,enum __asan::AllocType)
clang_rt.asan_dbg_dynamic-i386.dll!___asan_wrap_RtlFreeHeap@12()
combase.dll!CRetailMalloc_Free(IMalloc * pThis, void * pv) Line 658
at onecore\com\combase\class\memapi.cxx(658)
oleaut32.dll!APP_DATA::FreeCachedMem()
oleaut32.dll!VariantClear()
EmbeddedBrowserWebView.dll!base::win::ScopedVariant::~ScopedVariant(void)
EmbeddedBrowserWebView.dll!embedded_browser_webview_current::EmbeddedBrowserHost::PostMethodCall(int,class std::__1::basic_string<char,struct std::__1::char_traits,class std::__1::allocator > const &,class std::__1::basic_string<char,struct std::__1::char_traits,class std::__1::allocator > const &,class absl::optional<class std::__1::basic_string<char,struct std::__1::char_traits,class std::__1::allocator > > const &,int)
EmbeddedBrowserWebView.dll!embedded_browser_webview_current::EmbeddedBrowserHost::PostMethodCallSync(int,class std::__1::basic_string<char,struct std::__1::char_traits,class std::__1::allocator > const &,class std::__1::basic_string<char,struct std::__1::char_traits,class std::__1::allocator > const &,class absl::optional<class std::__1::basic_string<char,struct std::__1::char_traits,class std::__1::allocator > > const &,int,class base::OnceCallback)
EmbeddedBrowserWebView.dll!embedded_browser::mojom::HostStubDispatch::AcceptWithResponder(class embedded_browser::mojom::Host *,class mojo::Message *,class std::__1::unique_ptr<class mojo::MessageReceiverWithStatus,struct std::__1::default_delete >)
EmbeddedBrowserWebView.dll!embedded_browser::mojom::HostStub<struct mojo::RawPtrImplRefTraits >::AcceptWithResponder(class mojo::Message *,class std::__1::unique_ptr<class mojo::MessageReceiverWithStatus,struct std::__1::default_delete >)
EmbeddedBrowserWebView.dll!mojo::InterfaceEndpointClient::HandleValidatedMessage()
EmbeddedBrowserWebView.dll!mojo::MessageDispatcher::Accept(class mojo::Message )
EmbeddedBrowserWebView.dll!mojo::InterfaceEndpointClient::HandleIncomingMessage(class mojo::Message )
EmbeddedBrowserWebView.dll!mojo::internal::MultiplexRouter::ProcessIncomingMessage()
EmbeddedBrowserWebView.dll!mojo::internal::MultiplexRouter::Accept(class mojo::Message )
EmbeddedBrowserWebView.dll!mojo::MessageDispatcher::Accept(class mojo::Message )
EmbeddedBrowserWebView.dll!mojo::Connector::DispatchMessageW()
EmbeddedBrowserWebView.dll!mojo::Connector::ReadAllAvailableMessages()
EmbeddedBrowserWebView.dll!mojo::Connector::OnHandleReadyInternal()
EmbeddedBrowserWebView.dll!base::internal::Invoker<base::internal::BindState<void (embedded_browser::mojom::EmbeddedBrowserClient_OnPermissionRequest_ProxyToResponder::)(embedded_browser::mojom::PermissionState) attribute((thiscall)),std::__1::unique_ptr<embedded_browser::mojom::EmbeddedBrowserClient_OnPermissionRequest_ProxyToResponder,std::__1::default_delete<embedded_browser::mojom::EmbeddedBrowserClient_OnPermissionRequest_ProxyToResponder>>>,void (embedded_browser::mojom::PermissionState)>::RunOnce()
EmbeddedBrowserWebView.dll!mojo::SimpleWatcher::DiscardReadyState()
EmbeddedBrowserWebView.dll!base::internal::Invoker<base::internal::BindState<void ()(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &),base::RepeatingCallback<void (unsigned int)>>,void (unsigned int, const mojo::HandleSignalsState &)>::Run()
EmbeddedBrowserWebView.dll!mojo::SimpleWatcher::OnHandleReady()
EmbeddedBrowserWebView.dll!base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::)(int, unsigned int, const mojo::HandleSignalsState &) attribute((thiscall)),base::WeakPtrmojo::SimpleWatcher,int,unsigned int,mojo::HandleSignalsState>,void ()>::RunOnce()
EmbeddedBrowserWebView.dll!base::TaskAnnotator::RunTaskImpl(struct base::PendingTask &)
EmbeddedBrowserWebView.dll!base::TaskAnnotator::RunTask<>()
EmbeddedBrowserWebView.dll!embedded_browser_webview::internal::AppTaskRunner::DoWork()
EmbeddedBrowserWebView.dll!embedded_browser_webview::internal::AppTaskRunner::MessageCallback()
EmbeddedBrowserWebView.dll!base::internal::Invoker<base::internal::BindState<bool (embedded_browser_webview::internal::AppTaskRunner::)(unsigned int, unsigned int, long, long *) attribute((thiscall)),base::internal::UnretainedWrapper<embedded_browser_webview::internal::AppTaskRunner>>,bool (unsigned int, unsigned int, long, long )>::Run()
EmbeddedBrowserWebView.dll!base::win::MessageWindow::WindowProc()
EmbeddedBrowserWebView.dll!base::win::WrappedWindowProc<&base::win::MessageWindow::WindowProc>()
user32.dll!__InternalCallWinProc@20()
user32.dll!UserCallWinProcCheckWow()
user32.dll!DispatchMessageWorker()
user32.dll!_DispatchMessageA@4()
mfc140d.dll!AfxInternalPumpMessage() Line 181
at D:\a_work\1\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp(181)
mfc140d.dll!CWinThread::PumpMessage() Line 900
at D:\a_work\1\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp(900)
mfc140d.dll!CWinThread::Run() Line 629
at D:\a_work\1\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp(629)
OurApp.dll!COurAppThrd::Run() Line 439
at C:\code\OurApp\OurApp.cpp(439)
mfc140d.dll!_AfxThreadEntry(void * pParam) Line 122
at D:\a_work\1\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp(122)
ucrtbased.dll!thread_start<unsigned int (__stdcall)(void *),1>(void * const parameter) Line 97
at minkernel\crts\ucrt\src\appcrt\startup\thread.cpp(97)
clang_rt.asan_dbg_dynamic-i386.dll!__asan::AsanThread::ThreadStart(unsigned __int64,struct __sanitizer::atomic_uintptr_t *)
clang_rt.asan_dbg_dynamic-i386.dll!asan_thread_start()
kernel32.dll!@BaseThreadInitThunk@12()
ntdll.dll!__RtlUserThreadStart()
ntdll.dll!__RtlUserThreadStart@8()
Importance
Important. My app's user experience is significantly compromised.
Runtime Channel
Stable release (WebView2 Runtime)
Runtime Version
98.0.1108.62
SDK Version
1.0.1108.44
Framework
Win32
Operating System
Windows 10, Windows 11, Windows Server
OS Version
No response
Repro steps
An API call is made via axios Post method like below:
const service = async () => {
console.log("CustomPost"+payload.uri);
return axiosInstance.post(payload.uri, payload.data);
};
The api call does reach our service layer, but the hosting application crashes before the call completes.
Repros in Edge Browser
Not Applicable
Regression
No, this never worked
Last working version (if regression)
No response
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.