C++ iWebBrowser::在ole32.dll异常后导航死锁

C++ iWebBrowser::在ole32.dll异常后导航死锁,c++,mfc,ole,freeze,iwebbrowser2,C++,Mfc,Ole,Freeze,Iwebbrowser2,我有一个关于windows嵌入式浏览器和COM的问题。我试图做的是以HTML形式向用户显示一些数据,因此我使用iwebbrowser2控件来实现这一点 在ole32.dll崩溃后调用iwebbrowser2 Navigate后,我的应用程序出现了这种奇怪的死锁或挂起。此ole32崩溃在我的应用程序中随机发生。不存在异常发生的通常地点或时间。它可能发生在应用程序执行的开始,也可能发生在应用程序使用的后期。o运行的应用程序有几个线程正在运行,还有一些windows worker线程不知从何而来。有一

我有一个关于windows嵌入式浏览器和COM的问题。我试图做的是以HTML形式向用户显示一些数据,因此我使用
iwebbrowser2
控件来实现这一点

ole32.dll
崩溃后调用
iwebbrowser2 Navigate
后,我的应用程序出现了这种奇怪的死锁或挂起。此ole32崩溃在我的应用程序中随机发生。不存在异常发生的通常地点或时间。它可能发生在应用程序执行的开始,也可能发生在应用程序使用的后期。o运行的应用程序有几个线程正在运行,还有一些windows worker线程不知从何而来。有一个名为
WrapperThreadProc
的特定线程,我不确定它在做什么,但它在一个COM对象上调用了
CoUninitialize
,该对象可能不再存在,可能会导致
ole32.dll
上出现异常(不确定是否确实发生了这种情况)

以下是异常发生时调用堆栈的图片

下面是在
navigate()之后发生死锁时调用堆栈的图片

有人知道这个有线问题到底是怎么回事吗?我真的很感激任何小小的帮助


谢谢,我找到了这个问题的解决办法。事实证明,networkitemfactory.dll中发生了竞争条件,这将导致ole32.dll崩溃和卸载。如果在异常之后进行任何COM调用,如“iwebbrowser2::navigate”,则应用程序将挂起死锁。微软发布了一个修补程序。这是本文support.microsoft.com/en-us/kb/2494427

我找到了问题的解决方案。事实证明,networkitemfactory.dll中发生了竞争条件,这将导致ole32.dll崩溃和卸载。如果在异常之后进行任何COM调用,如“iwebbrowser2::navigate”,则应用程序将挂起死锁。微软发布了一个修补程序。这里是文章support.microsoft.com/en-us/kb/2494427

屏幕截图无法阅读,也没有用处。始终以文本形式发布调用堆栈,并提供。根据您提供的信息,我们只能建议您修复错误。谢谢您的评论。下次我提问时,我会记住所有的建议。话虽如此,我已经找到了解决问题的办法。事实证明,networkitemfactory.dll中发生了竞争情况,Microsoft为此发布了修补程序。这是文章。截图不可读,也没用。始终以文本形式发布调用堆栈,并提供。根据您提供的信息,我们只能建议您修复错误。谢谢您的评论。下次我提问时,我会记住所有的建议。话虽如此,我已经找到了解决问题的办法。事实证明,networkitemfactory.dll中发生了竞争情况,Microsoft为此发布了修补程序。这是文章。