XMLScanner :: XInces的CommonInit崩溃

时间:2014-10-14 09:46:33

标签: xerces

我们在XercesDOMParser中使用DLL。我们的DLL在IIS 7应用程序池上运行,我们遇到IIS 7工作进程启动时崩溃。崩溃是随机发生的。

崩溃转储中的堆栈跟踪如下(来自WinDebug):

0000000`017ad970 00000000`120810bb xerces_c_3_1!xercesc_3_1::XMLScanner::commonInit+0x1e
00000000`017ad9c0 00000000`1205b3c4 xerces_c_3_1!xercesc_3_1::XMLScanner::XMLScanner+0x413
00000000`017ada40 00000000`12086969 xerces_c_3_1!xercesc_3_1::IGXMLScanner::IGXMLScanner+0x20
00000000`017adab0 00000000`1209b0e4 xerces_c_3_1!xercesc_3_1::XMLScannerResolver::getDefaultScanner+0x4d
00000000`017adb00 00000000`1209ada8 xerces_c_3_1!xercesc_3_1::AbstractDOMParser::initialize+0x74
00000000`017adb50 00000000`120aa392 xerces_c_3_1!xercesc_3_1::AbstractDOMParser::AbstractDOMParser+0x100
00000000`017adbc0 00000000`01635cf0 xerces_c_3_1!xercesc_3_1::XercesDOMParser::XercesDOMParser+0xe
00000000`017adbf0 00000000`0163686f EmbeddedConfigurationClient!GACreateConfigurationClient+0x4bbf
//...

为什么我们在流程启动时遇到此崩溃?解决问题的任何线索?我们在调用XMLPlatformUtils::Initialize()

后从构造函数中实例化XercesDOMParser

我有以下信息。同样来自崩溃转储:

FAILURE_BUCKET_ID:  NULL_POINTER_READ_c0000005_xerces-c_3_1.dll!xercesc_3_1::XMLScanner::commonInit

AULTING_IP: 
xerces_c_3_1!xercesc_3_1::XMLScanner::commonInit+1e
00000000`12082d6a 488b0b          mov     rcx,qword ptr [rbx]

EXCEPTION_RECORD:  ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000012082d6a (xerces_c_3_1!xercesc_3_1::XMLScanner::commonInit+0x000000000000001e)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000000
   Parameter[1]: 0000000000000000
Attempt to read from address 0000000000000000

PROCESS_NAME:  w3wp.exe

ADDITIONAL_DEBUG_TEXT:

Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.

FAULTING_MODULE: 0000000077bb0000 ntdll    
DEBUG_FLR_IMAGE_TIMESTAMP:  4bd18e21    
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.    
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.    
EXCEPTION_PARAMETER1:  0000000000000000   
EXCEPTION_PARAMETER2:  0000000000000000    
READ_ADDRESS:  0000000000000000 

我有Xerces C++代码,但无法确定导致问题的代码行。 我们非常感谢您解决此问题的任何帮助。

此致 乔治

1 个答案:

答案 0 :(得分:0)

只是帮助某人..根本原因是多个线程正在访问Xerces代码 同时。我们更新了代码(有时返回),问题已经解决。

此致 乔治