最近,我们发现在我们的客户站点升级到 Windows Server 2008R2 后,与 COM 相关的崩溃显着增加。最初我们认为这可能是由于 COM 引用计数问题造成的,但在通过代码进一步调查后,我们排除了这种可能性。我们正在考虑的另一个角度是,COM 库是否可能由于此问题而未初始化?在调查代码后,我们再次排除了它。截至目前,我们还没有任何具体的答案。
在迁移到 64 位后,是否有任何已知的 COM 崩溃事件增加?
以下是崩溃指纹。我在这篇文章中保持简洁。
崩溃 1:
0:000> 韩元 2
#ChildEBP 返回地址
00 0033e9d8 662051d5 pvformscom!ATL::CComPtrBase::~CComPtrBase(void)+0x6 [c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atlcomcli.h @ 162]
01 0033ea00 66210586 pvformscom!COrder::~COrder(void)+0xa6 [c:\2012.01_svc_dep\cpp\pvformscom\order.cpp @ 149]
0:000> .frame 00
00 0033e9d8 662051d5 pvformscom!ATL::CComPtrBase::~CComPtrBase+0x6 [c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atlcomcli.h @ 162]
0:000> dt 这个
本地 var @ecx 类型 ATL::CComPtrBase*
{ 00000001 } +0x000 p : 0x00000001 I日历
崩溃 2:
0:000> 韩元 2
#ChildEBP 返回地址
00 0016e6d8 646052a9 pvformscom!ATL::CComPtrBase::~CComPtrBase(void)+0x6 [c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atlcomcli.h @ 162]
01 0016e700 646106ae pvformscom!COrder::~COrder(void)+0x6f [c:\2012.01_svc_dep\cpp\pvformscom\order.cpp @ 152]
0:000> .frame 00
00 0016e6d8 646052a9 pvformscom!ATL::CComPtrBase::~CComPtrBase+0x6 [c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atlcomcli.h @ 162]
0:000> dt 这个
本地 var @ecx 类型 ATL::CComPtrBase*
{ 00000001 } +0x000 p : 0x00000001 II免疫
崩溃 3:
0:000> 韩元 2
#ChildEBP 返回地址
00 0032f008 6193f444 pvformscom!ATL::CComPtrBase::~CComPtrBase(void)+0x6 [c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atlcomcli.h @ 162]
01 0032f038 6194d2a7 pvformscom!CClinicalEvent::~CClinicalEvent(void)+0x2df [c:\2012.01_svc_dep\cpp\pvformscom\clinicalevent.cpp @ 170]
0:000> .frame 00
00 0032f008 6193f444 pvformscom!ATL::CComPtrBase::~CComPtrBase+0x6 [c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atlcomcli.h @ 162]
0:000> dt 这个
本地 var @ecx 类型 ATL::CComPtrBase*
{ 00000001 } +0x000 p : 0x00000001 IPVCollection
非常感谢任何帮助。
注意:我们在我们的类中使用一些智能指针作为成员变量。
谢谢,
树
最佳答案
如果您在 ::CoUninitialize()
之后调用 Release()
这将是
这种行为。
关于c++ - CComPtrBase::~CComPtrBase 在解除分配智能指针时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471520/