为什么Excel被阻止了?

时间:2015-11-09 17:26:18

标签: c# excel office-interop windbg xll

我有一个使用Office Interop库加载managedXLL的Excel工作簿。 ManagedXLL用于加载我们在内部编写的一些C#库。加载ManagedXLL时,Excel进程偶尔会挂起。

_excelInstance.RegisterXLL(addInPath);

当打开其他已加载managedXLL的Excel工作簿时会发生这种情况。

我使用procdump转储进程并将其放入WinDbg中。输出是:

0:000> kb
# ChildEBP RetAddr  Args to Child              
00 001f9898 76221605 00000002 001f98e8 00000001 ntdll!ZwWaitForMultipleObjects+0x15
01 001f9934 76ab19fc 001f98e8 001f995c 00000000 KERNELBASE!WaitForMultipleObjectsEx+0x100
02 001f997c 76f8086a 00000002 7efde000 00000000 kernel32!WaitForMultipleObjectsExImplementation+0xe0
03 001f99d0 76ce2bd1 00000074 001f9a1c 000003e8 user32!RealMsgWaitForMultipleObjectsEx+0x14d
04 001f99fc 76ce2d11 001f9a1c 000003e8 001f9a2c ole32!CCliModalLoop::BlockFn+0xa1
05 001f9a24 76dfd2f6 ffffffff 004a86f0 004450fc ole32!ModalLoop+0x5b
06 001f9a40 76dfd098 00000000 001f9b48 00000000 ole32!ThreadSendReceive+0x12d
07 001f9a6c 76dfcef0 001f9b34 004a9a50 001f9b90 ole32!CRpcChannelBuffer::SwitchAptAndDispatchCall+0x1a7
08 001f9b4c 76ce2c9a 004a9a50 001f9c78 001f9c60 ole32!CRpcChannelBuffer::SendReceive2+0xef
09 001f9b68 76cf9aa1 001f9c78 001f9c60 004a9a50 ole32!CCliModalLoop::SendReceive+0x1e
0a 001f9be4 76cf9b24 004a9a50 001f9c78 001f9c60 ole32!CAptRpcChnl::SendReceive+0x73
0b 001f9c38 76dfce06 004a9a50 001f9c78 001f9c60 ole32!CCtxComChnl::SendReceive+0x1c5
0c 001f9c54 769742cb 03d8af84 001f9ca4 769f0149 ole32!NdrExtpProxySendReceive+0x49
0d 001f9c60 769f0149 46defae7 001fa0ac 0700022b rpcrt4!NdrpProxySendReceive+0xe
0e 001fa074 76dfc8e2 76d0fa10 76d14640 001fa0ac rpcrt4!NdrClientCall2+0x1a6
0f 001fa094 76cf98ad 00000014 00000004 001fa0f4 ole32!ObjectStublessClient+0xa2
10 001fa0a4 76ce2f1f 03d8af84 00000001 001fa0d8 ole32!ObjectStubless+0xf
11 001fa0f4 76cd2e40 00459e88 00456200 00000001 ole32!CStdMarshal::RemoteAddRef+0xb6
12 001fa118 76cefc83 001fa2a8 00456200 00459e88 ole32!CStdMarshal::GetNeededRefs+0x4b
13 001fa14c 76cefbc2 001fa2a8 00456200 00459e88 ole32!CStdMarshal::ConnectCliIPIDEntry+0xa6
14 001fa17c 76cefb2e 001fa298 001fa2a8 00456200 ole32!CStdMarshal::MakeCliIPIDEntry+0x91
15 001fa1a8 76cf0098 001fa298 001fa2a8 00456200 ole32!CStdMarshal::UnmarshalIPID+0x66
16 001fa218 76cf2253 001fa290 001fabc0 03d4b77c ole32!CStdMarshal::UnmarshalObjRef+0x113
17 001fa230 76cf221e 001fa248 00000000 001fa304 ole32!UnmarshalSwitch+0x25
18 001fa264 76cef1a3 03d4b77c 001fabc0 00000000 ole32!UnmarshalObjRef+0x90
19 001fa2ec 76d5a015 001fa304 76d09b0c 001fabc0 ole32!CoUnmarshalInterface+0xf1
1a 001fa338 76d2349f 03d71138 001fa360 001fabc0 ole32!CRunningObjectTable::IGetObject+0x6c
1b 001fab6c 76ef8fbe 0044bbd0 00458900 001fabc0 ole32!CRunningObjectTable::GetObjectW+0x6f
1c 001fab88 047a31d8 0044bbd0 00000000 001fabc0 oleaut32!GetActiveObject+0x3e
WARNING: Stack unwind information not available. Following frames may be wrong.
1d 001fabc4 047a388f 00000000 00b80814 00000000 Managed_2007+0x31d8
1e 001fabf0 047c715a 0020b3a0 7622372f 001fac28 Managed_2007+0x388f
1f 001fac00 047c73a2 00000001 00000409 0020b3a0 Managed_2007!xlWiz411+0x13b
20 001fac28 302b55e1 00000041 00000000 00000041 Managed_2007!xlAutoOpen+0x3b
21 001faca4 3029f88b 001facc8 03e49860 00000000 EXCEL!MdCallBack12+0x12f09
22 001facd0 300c6c87 03e49860 00000000 001fb094 EXCEL!Ordinal40+0x9ef88b
23 001facf8 3029eac2 00000000 03e49860 00000000 EXCEL!Ordinal40+0x816c87
24 001fb0c0 302a82cd 00000000 0020b32c 00000000 EXCEL!Ordinal40+0x9eeac2
25 0020b29c 2fb1505e 0020b2c4 0020b32c 00000001 EXCEL!MdCallBack12+0x5bf5
26 0020b314 2f9aee2b 0020b52c 0020b32c 0020b5ac EXCEL!Ordinal40+0x26505e
27 0020b330 2f8f8afe 0020c32c 00000100 2f8f9ceb EXCEL!Ordinal40+0xfee2b
28 0020c330 76d0ee81 00000000 00000080 00000000 EXCEL!Ordinal40+0x48afe
29 0020c3dc 779e80f4 46e2cd29 00052dcc 0020d3ec ole32!GetCurrentApartmentId+0x41
2a 0020c3f8 0020d59c 00000409 0020d59c 00000000 ntdll!bsearch+0xaa
2b 00000000 00000000 00000000 00000000 00000000 0x20d59c

Looking at the stack variables for frame 0n26 
0:000> .frame 0n27;dv
1b 001fab6c 76ef8fbe ole32!CRunningObjectTable::GetObjectW+0x6f [d:\w7rtm\com\ole32\com\rot\crot.cxx @ 990]
           this = 0x0044bbd0
  pmkObjectName = 0x00458900
    ppunkObject = 0x001fabc0
     tmpMkEqBuf = class CTmpMkEqBuf

pmkObjectName has the CLSID for Excel.Application

任何人都知道在发生时发生了什么?

0 个答案:

没有答案