我们在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()
我有以下信息。同样来自崩溃转储:
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++
代码,但无法确定导致问题的代码行。
我们非常感谢您解决此问题的任何帮助。
此致 乔治
答案 0 :(得分:0)
只是帮助某人..根本原因是多个线程正在访问Xerces代码 同时。我们更新了代码(有时返回),问题已经解决。
此致 乔治