Windows应用程序中随机崩溃。转储分析没有帮助

时间:2017-03-23 23:16:26

标签: c++ windows mfc ace msvcr90.dll

我们的一位客户在我们的应用程序中面临随机崩溃(应用程序刚刚消失)。我使用ADPLUS来获取崩溃转储。每次转储显示不同的地方作为崩溃的一部分。当我分析转储时,我确信应用程序不应该在这个地方崩溃。

我们的应用程序的相同版本在类似环境中的其他客户端位置运行,并且没有观察到崩溃。我还能做些什么来找出崩溃。

下面是事件查看器日志(2套):它们显示MSVCR90.dll,少数情况下mfc90.dll是故障模块。正如我所提到的,崩溃是随机发生的。如果我按照崩溃中结束的相同步骤返回,则无法重现相同的崩溃。

应用程序:windows 32位应用程序。

操作系统:Windows 7企业版,64位

RAM:16GB

Intel(R)Xeon(R)CPU E5-2650 v2 @ 2.60GHz,处理器数量32

显卡:Nvidia NVS310驱动程序版本:9.18.13.3221(是的,我们的应用程序需要良好的显卡,因为设置将有2个5-MP显示器。)

其中一个Stack Trace如下所示:

0b7ae8a8 74bd3cb2 03d13d74 ccd24bf2 0000009f msvcr90!__sbh_alloc_block+0x200
0b7ae8e0 74bd3d9d 000000a0 0000009f 000000a0 msvcr90!V6_HeapAlloc+0x2d
0b7ae8f8 74bd3eb8 000000a0 03d68ee4 03d68d2c msvcr90!malloc+0x5e
0b7ae910 100062d0 000000a0 1000953f 000000a0 msvcr90!operator new+0x1f
0b7ae918 1000953f 000000a0 3c5ffb60 03d68d40 ace!ACE_New_Allocator::malloc+0x10
0b7ae930 1000d685 3c60d3c0 0000009f 00000001 ace!ACE_String_Base<char>::set+0x2f
0b7ae94c 68002d06 3c5ffb60 ccd24909 0b7ae9fd ace!ACE_String_Base<char>::ACE_String_Base<char>+0x35
0b7ae978 680030ce 3c5ffb38 ccd249d5 0b7ae9fd xml!XmlAttributes::Attribute::Attribute+0x37
0b7ae9a4 680031bd 03d68d18 3c5ffb38 ccd249a9 xml!std::_Construct<XmlAttributes::Attribute,XmlAttributes::Attribute>+0x25
0b7ae9d8 68003382 3c5ff9d0 3c5ffcdc 03d68d18 xml!std::_Uninit_copy<XmlAttributes::Attribute *,XmlAttributes::Attribute *,std::allocator<XmlAttributes::Attribute> >+0x27
0b7aea00 680036ac 3c5ff9d0 3c5ffcdc 03d68bb0 xml!stdext::unchecked_uninitialized_copy<XmlAttributes::Attribute *,XmlAttributes::Attribute *,std::allocator<XmlAttributes::Attribute> >+0x22
0b7aea14 680037c3 3c5ff9d0 3c5ffcdc 03d68bb0 xml!std::vector<XmlAttributes::Attribute,std::allocator<XmlAttributes::Attribute> >::_Umove<XmlAttributes::Attribute *>+0x15
0b7aead0 68003a39 3c635420 3c5ffcdc 00000001 xml!std::vector<XmlAttributes::Attribute,std::allocator<XmlAttributes::Attribute> >::_Insert_n+0xb2
0b7aeaf8 68003aad 0b7aeb1c 3c635420 3c5ffcdc xml!std::vector<XmlAttributes::Attribute,std::allocator<XmlAttributes::Attribute> >::insert+0x49
0b7aeb24 68003ae0 0b7aeb40 ccd24bf9 0000000d xml!std::vector<XmlAttributes::Attribute,std::allocator<XmlAttributes::Attribute> >::push_back+0x53
0b7aeb88 68006a59 3c6095a0 680200f0 3c60e5a0 xml!XmlAttributes::push+0x2c
0b7aebf4 1203ed95 3c5f5320 3c60e5a0 3c6045c0 xml!XmlHandler::startElement+0xd9
0b7aec10 1202d508 3c5f0fc0 00000000 00000000 xerces_c_1_5_1!SAXParser::startElement+0x45
0b7aec98 1202e5a0 0b7aecc3 ccd24c92 3c604630 xerces_c_1_5_1!XMLScanner::scanStartTag+0x8a8
0b7aecd4 1202e759 00000000 ccd24d4e 68020420 xerces_c_1_5_1!XMLScanner::scanContent+0x110
0b7aed08 1203e710 3c605b00 00000000 ccd24d16 xerces_c_1_5_1!XMLScanner::scanDocument+0x89
0b7aed50 6800a43e 3c605b00 00000000 1000d6d0 xerces_c_1_5_1!SAXParser::parse+0x70
0b7aed64 68004320 0b7aee70 ccd24e7d 1000d6d0 xml!XmlParser::parse+0x19
0b7aee0c 6801569a ccd24efd 1000d6d0 347df220 xml!XmlBaseBuilder::build+0x72
0b7aee8c 02343a77 0b7aefe4 0b7aef88 0b7af020 xml!SOS::XmlUtils::streamIn+0x39
0b7af05c 02348cb2 0b7af0b0 08dfbafc 1000d6d0 HTTPTransport!HTTPClient::HttpMessageFactory::decodeMessage+0x327
0b7af218 02348ab9 ffffffff 006ba586 08dfba70 HTTPTransport!HTTPClient::HttpTransport::receiveMessage+0x1f2
0b7af220 006ba586 08dfba70 3c638448 00000000 HTTPTransport!HTTPClient::HttpTransport::receiveMessage+0x9
0b7af3e0 0088ed30 0b7af964 0b7af484 08dfbafc Framework!BaseHttpTransport::MakeHttpRequest+0x246
0b7af49c 0089ab92 0b7af964 0b7afacc 0b7afaac Framework!StentorTransport::CallMethod+0x60
0b7afad8 006897be 3915cdc8 3c63a768 0b7afd60 Framework!Worklist::QueryForImageKeys+0x212

这里进行查询以获得编码格式的图像细节,该格式将转换为xml。我验证了为其创建xml元素的字符串。这是一个有效的字符串。 malloc失败了。不知道为什么。如果我重新启动应用程序并打开相同的应用程序,则不会出现任何问题,并且将处理相同的编码细节并将其转换为XML而不会出现任何问题。

事件查看器日志集1:

Faulting application name: DiagnosticAPP.exe, version: 4.4.3215.0, time stamp: 0x58ccb3cc
Faulting module name: MSVCR90.dll, version: 9.0.30729.6161, time stamp: 0x4dace5b9
Exception code: 0xc0000005
Fault offset: 0x00065b9c
Faulting process id: 0x1d50
Faulting application start time: 0x01d2a330474b10c8
Faulting application path: C:\Program Files (x86)\Philips\IntelliSpace Diagnostic\4.4\DiagnosticAPP.exe
Faulting module path: C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.dll

Details :
System 
      - Provider     
   [ Name]  Application Error      
  - EventID 1000     
   [ Qualifiers]  0      
   Level 2      
   Task 100      
   Keywords 0x80000000000000      
  - TimeCreated     
   [ SystemTime]  2017-03-22T17:58:47.000000000Z      
   EventRecordID 77414      
   Channel Application      
   Computer PC01234.org      
   Security 

- EventData     
   DiagnosticAPP.exe 
   4.4.3215.0 
   58ccb3cc 
   MSVCR90.dll 
   9.0.30729.6161 
   4dace5b9 
   c0000005 
   00065b9c 
   1d50 
   01d2a330474b10c8 
   C:\Program Files (x86)\Philips\IntelliSpace Diagnostic\4.4\DiagnosticAPP.exe        C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.dll 
   3204d55c-0f29-11e7-ada3-4439c4510287     
Report Id: 3204d55c-0f29-11e7-ada3-4439c4510287

事件查看器日志集2:

Faulting application name: DiagnosticAPP.exe, version: 4.4.3215.0, time stamp: 0x58ccb3cc
Faulting module name: mfc90.dll, version: 9.0.30729.6161, time stamp: 0x4dad06e0
Exception code: 0xc0000005
Fault offset: 0x0020ec1b
Faulting process id: 0x296c
Faulting application start time: 0x01d2a31ee4f9cffa
Faulting application path: C:\Program Files (x86)\Philips\IntelliSpace Diagnostic\4.4\DiagnosticAPP.exe
Faulting module path: C:\Windows\WinSxS\x86_microsoft.vc90.mfc_1fc8b3b9a1e18e3b_9.0.30729.6161_none_4bf7e3e2bf9ada4c\mfc90.dll
Report Id: 79873702-0f23-11e7-ada3-4439c4510287


Details :

System     
  - Provider     
   [ Name]  Application Error 
  - EventID 1000     
   [ Qualifiers]  0      
   Level 2      
   Task 100      
   Keywords 0x80000000000000      
  - TimeCreated     
   [ SystemTime]  2017-03-22T17:17:50.000000000Z      
   EventRecordID 77397      
   Channel Application      
   Computer PC01234     
   Security 

- EventData     
   DiagnosticAPP.exe 
   4.4.3215.0 
   58ccb3cc 
   mfc90.dll 
   9.0.30729.6161 
   4dad06e0 
   c0000005 
   0020ec1b 
   296c 
   01d2a31ee4f9cffa 
   C:\Program Files (x86)\Philips\IntelliSpace Diagnostic\4.4\DiagnosticAPP.exe        C:\Windows\WinSxS\x86_microsoft.vc90.mfc_1fc8b3b9a1e18e3b_9.0.30729.6161_none_4bf7e3e2bf9ada4c\mfc90.dll 
   79873702-0f23-11e7-ada3-4439c4510287 

1 个答案:

答案 0 :(得分:1)

状态代码0xc0000005显示它是一个分段错误,可能是由于内存损坏(覆盖相邻字节的块)。即使我最近遇到这个问题,当我碰巧执行的memcpy大于分配的内存时,会损坏堆内存。