环境:win2003+sp2 .net 2.0(已经打了2个kb)
在写的个服务程序中,动态加载了一些com,
动态调用com执行正常.
但是过了一会在垃圾回收的时候会报Access violation错误.
猜测是调用的COM的问题,但是是那一类的问题就不知道了,偶对C++不熟悉 :(
以下是windbg分析的些信息:
(c40.da8): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000102 ebx=00000000 ecx=7c821d43 edx=7c9585ec esi=000007b4 edi=7c821c7b
eip=0a9b2d3c esp=0d6bffb0 ebp=0d6bffec iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
0a9b2d3c ?? ???
0:018> !gle
LastErrorValue: (Win32) 0x3e5 (997) - I/O
LastStatusValue: (NTSTATUS) 0x103 - <Unable to get error code text>0:014> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
************************************************************************************ OS symbols are WRONG. Please fix symbols to do analysis.***** OS symbols are WRONG. Please fix symbols to do analysis.*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_PEB ***
*** ***
*************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for advapi32.dll -
*** WARNING: Unable to verify checksum for System.ServiceProcess.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for System.ServiceProcess.ni.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ole32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for rpcrt4.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for comsvcs.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msjet40.dll - FAULTING_IP:
+aa02d3c
0aa02d3c ?? ???EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 0aa02d3c
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 0aa02d3c
Attempt to read from address 0aa02d3cPROCESS_NAME: FLSService.exeFAULTING_MODULE: 7c930000 ntdllDEBUG_FLR_IMAGE_TIMESTAMP: 4333e7ecERROR_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"READ_ADDRESS: 0aa02d3c BUGCHECK_STR: ACCESS_VIOLATIONMANAGED_STACK: !dumpstack -EE
OS Thread Id: 0x748 (14)
Current frame:
ChildEBP RetAddr Caller,CalleeLAST_CONTROL_TRANSFER: from 00000000 to 0aa02d3cFAILED_INSTRUCTION_ADDRESS:
+aa02d3c
0aa02d3c ?? ???SYMBOL_ON_RAW_STACK: 1STACK_ADDR_RAW_STACK_SYMBOL: 17002000010004STACK_COMMAND: dds 0D61EC80-0x20 ; kbSTACK_TEXT:
0d61ec60 00000000
0d61ec64 0d61ec78
0d61ec68 7c821c8d kernel32!WaitForSingleObject+0x12
0d61ec6c 0000040c
0d61ec70 00004e20
0d61ec74 00000000
0d61ec78 0d61eca8
0d61ec7c 7a0066fe mscorwks!GetCompileInfo+0x4078f
0d61ec80 0000040c
0d61ec84 00004e20
0d61ec88 702018a8
0d61ec8c 00000000
0d61ec90 00000001
0d61ec94 7c822311 kernel32!SetEvent
0d61ec98 00000000
0d61ec9c 0d61ed40
0d61eca0 7a2fd1a0 mscorwks!NGenCreateNGenWorker+0xa2aa5
0d61eca4 00000000
0d61eca8 0d61ed4c
0d61ecac 7a006db1 mscorwks!GetCompileInfo+0x40e42
0d61ecb0 0000040c
0d61ecb4 00004e20
0d61ecb8 7020194c
0d61ecbc 00d79a84
0d61ecc0 00000000
0d61ecc4 00d70000
0d61ecc8 00000044
0d61eccc 00000000
0d61ecd0 00000000
0d61ecd4 00000000
0d61ecd8 00000000
0d61ecdc 00000000
FAULTING_THREAD: 00000748FOLLOWUP_IP:
mscorwks!GetCompileInfo+4078f
7a0066fe 8bf0 mov esi,eaxFOLLOWUP_NAME: MachineOwnerMODULE_NAME: mscorwksIMAGE_NAME: mscorwks.dllSYMBOL_NAME: mscorwks!GetCompileInfo+4078fDEFAULT_BUCKET_ID: WRONG_SYMBOLSBUCKET_ID: WRONG_SYMBOLSFollowup: MachineOwner=================================================
如果解决了另开贴给分.
切望高手帮忙!!
在写的个服务程序中,动态加载了一些com,
动态调用com执行正常.
但是过了一会在垃圾回收的时候会报Access violation错误.
猜测是调用的COM的问题,但是是那一类的问题就不知道了,偶对C++不熟悉 :(
以下是windbg分析的些信息:
(c40.da8): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000102 ebx=00000000 ecx=7c821d43 edx=7c9585ec esi=000007b4 edi=7c821c7b
eip=0a9b2d3c esp=0d6bffb0 ebp=0d6bffec iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
0a9b2d3c ?? ???
0:018> !gle
LastErrorValue: (Win32) 0x3e5 (997) - I/O
LastStatusValue: (NTSTATUS) 0x103 - <Unable to get error code text>0:014> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
************************************************************************************ OS symbols are WRONG. Please fix symbols to do analysis.***** OS symbols are WRONG. Please fix symbols to do analysis.*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_PEB ***
*** ***
*************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for advapi32.dll -
*** WARNING: Unable to verify checksum for System.ServiceProcess.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for System.ServiceProcess.ni.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ole32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for rpcrt4.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for comsvcs.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msjet40.dll - FAULTING_IP:
+aa02d3c
0aa02d3c ?? ???EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 0aa02d3c
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 0aa02d3c
Attempt to read from address 0aa02d3cPROCESS_NAME: FLSService.exeFAULTING_MODULE: 7c930000 ntdllDEBUG_FLR_IMAGE_TIMESTAMP: 4333e7ecERROR_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"READ_ADDRESS: 0aa02d3c BUGCHECK_STR: ACCESS_VIOLATIONMANAGED_STACK: !dumpstack -EE
OS Thread Id: 0x748 (14)
Current frame:
ChildEBP RetAddr Caller,CalleeLAST_CONTROL_TRANSFER: from 00000000 to 0aa02d3cFAILED_INSTRUCTION_ADDRESS:
+aa02d3c
0aa02d3c ?? ???SYMBOL_ON_RAW_STACK: 1STACK_ADDR_RAW_STACK_SYMBOL: 17002000010004STACK_COMMAND: dds 0D61EC80-0x20 ; kbSTACK_TEXT:
0d61ec60 00000000
0d61ec64 0d61ec78
0d61ec68 7c821c8d kernel32!WaitForSingleObject+0x12
0d61ec6c 0000040c
0d61ec70 00004e20
0d61ec74 00000000
0d61ec78 0d61eca8
0d61ec7c 7a0066fe mscorwks!GetCompileInfo+0x4078f
0d61ec80 0000040c
0d61ec84 00004e20
0d61ec88 702018a8
0d61ec8c 00000000
0d61ec90 00000001
0d61ec94 7c822311 kernel32!SetEvent
0d61ec98 00000000
0d61ec9c 0d61ed40
0d61eca0 7a2fd1a0 mscorwks!NGenCreateNGenWorker+0xa2aa5
0d61eca4 00000000
0d61eca8 0d61ed4c
0d61ecac 7a006db1 mscorwks!GetCompileInfo+0x40e42
0d61ecb0 0000040c
0d61ecb4 00004e20
0d61ecb8 7020194c
0d61ecbc 00d79a84
0d61ecc0 00000000
0d61ecc4 00d70000
0d61ecc8 00000044
0d61eccc 00000000
0d61ecd0 00000000
0d61ecd4 00000000
0d61ecd8 00000000
0d61ecdc 00000000
FAULTING_THREAD: 00000748FOLLOWUP_IP:
mscorwks!GetCompileInfo+4078f
7a0066fe 8bf0 mov esi,eaxFOLLOWUP_NAME: MachineOwnerMODULE_NAME: mscorwksIMAGE_NAME: mscorwks.dllSYMBOL_NAME: mscorwks!GetCompileInfo+4078fDEFAULT_BUCKET_ID: WRONG_SYMBOLSBUCKET_ID: WRONG_SYMBOLSFollowup: MachineOwner=================================================
如果解决了另开贴给分.
切望高手帮忙!!
解决方案 »
- c#中抽象类和接口的区别:这两者中的方法都是只有声明,那有什么区别?
- 循环语句,读取数据库,把每行第一列数据写到texBox1中,运行没反应,哪位高手知道怎么解呀?
- 着急!求助!怎么做项目——自己要做一个类似网络爬虫的但很简单的小的搜索引擎软件
- DataGridView 连接MySQL数据库表
- 如何取出gridview当前行中某个字段的值(急)
- 关于 Microsoft Meida Player的流问题。
- 求C#做班级通讯录的思路
- 新手窗口传值问题,在线等
- HxDataPage.Net翻页组件 v3.7发布,企业级数据翻页轻松搞定.来者有分!
- 在C#中如何处理事件?
- 正则表达式里"\v"匹配什么?
- 窗口隐藏或者没有在工具栏上显示图标的时候,窗口的全局快捷键是不是就没有了?
也可能是你调用模式有问题——你应该贴代码,而不是出错提示
对于非托管资源,可以在析构函数中释放
如
~YourClass()
{
UnMgnObjectDispose();
}
看看是否还会出错。
string AssemblyFile=...
Assembly ass = Assembly.LoadFile(AssemblyFile);
Type type = ass.GetType(ClassName, false, true);
ass.CreateInstance(type.FullName, true);
//调用
MethodInfo CallMethod = ..;//find method
CallMethod.Invoke(..);//调用//在dispose的时候也调用了Marshal.ReleaseComObject(obj);关键现在是定位问题是.net的问题 还是COM的问题.
如果是com的问题 那么大概是什么类的
也好让 相关的人改.
ref:http://blogs.msdn.com/yvesdolc/archive/2004/04/17/115379.aspx
可能是你释放的时候其他托管代码还具有它的引用
ReleaseComObject的问题google下还有很多,还有的是nofix...
我没有写一行代码哎.
是windbg输出的结果哦.
难道csdn没有一个高手?