1

这是问题所在:我开发了一个活动文档服务器并在 IE 中使用它。活动文档有一个名为“工作”的按钮,单击它时,它会工作约 3 秒。在此期间,我无法以任何方式使用 IE。像切换标签或关闭标签。我的问题是:按钮在另一个进程的com对象中的一个组件中,为什么它会挂IE?如果我使用 ProcessXP 或 WinDBG 挂起 com 服务器,那么 IE 将永远不会做出反应,直到 com 服务器恢复。我在下面得到了 IE 的堆栈,两个都是 iexplore.exe。任何人告诉我 IE 正在等待什么?开发环境:Win server 2008 standard 64 bit/IE 8 32bit

主 iexplore.exe:

0:009> ~*k
0  Id: 1140.d4c Suspend: 1 Teb: 00000000`7efdb000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0011dca8 00000000`7513ab53 wow64win!NtUserPeekMessage+0xa
00000000`0011dcb0 00000000`7518cf87 wow64win!whNtUserPeekMessage+0x37
00000000`0011dd20 00000000`7511276d wow64!Wow64SystemServiceEx+0xd7
00000000`0011e5e0 00000000`7518d07e wow64cpu!TurboDispatchJumpAddressEnd+0x24
00000000`0011e6a0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0011e6f0 00000000`774d84c8 wow64!Wow64LdrpInitialize+0x429
00000000`0011ec40 00000000`774d7623 ntdll!LdrpInitializeProcess+0x17e2
00000000`0011f140 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bea0
00000000`0011f1b0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   1  Id: 1140.10f8 Suspend: 1 Teb: 00000000`7efd8000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0283e998 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`0283e9a0 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`0283ea60 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0283eab0 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0283f000 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0283f070 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   2  Id: 1140.1298 Suspend: 1 Teb: 00000000`7ef9d000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0288e968 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`0288e970 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`0288ea30 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0288ea80 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0288efd0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0288f040 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   3  Id: 1140.13d0 Suspend: 1 Teb: 00000000`7ef9a000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`029eec28 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`029eec30 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`029eecf0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`029eed40 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`029ef290 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`029ef300 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   4  Id: 1140.e64 Suspend: 1 Teb: 00000000`7ef97000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`02b6f0f8 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`02b6f100 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`02b6f1c0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`02b6f210 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`02b6f760 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`02b6f7d0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   5  Id: 1140.3b0 Suspend: 1 Teb: 00000000`7ef91000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0292ee08 00000000`75112bcd wow64cpu!CpupSyscallStub+0x9
00000000`0292ee10 00000000`7518d07e wow64cpu!Thunk0ArgReloadState+0x1a
00000000`0292eed0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0292ef20 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0292f470 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0292f4e0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   6  Id: 1140.1290 Suspend: 1 Teb: 00000000`7ef8b000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`02bdf088 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`02bdf090 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`02bdf150 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`02bdf1a0 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`02bdf6f0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`02bdf760 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   7  Id: 1140.c80 Suspend: 1 Teb: 00000000`7ef79000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0474e7c8 00000000`751aa2df ntdll!NtWaitForWorkViaWorkerFactory+0xa
00000000`0474e7d0 00000000`7518cf87 wow64!whNtWaitForWorkViaWorkerFactory+0x23
00000000`0474e820 00000000`7511276d wow64!Wow64SystemServiceEx+0xd7
00000000`0474f0e0 00000000`7518d07e wow64cpu!TurboDispatchJumpAddressEnd+0x24
00000000`0474f1a0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0474f1f0 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0474f740 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0474f7b0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   8  Id: 1140.17f0 Suspend: 1 Teb: 00000000`7efd5000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`036ce5e8 00000000`751aa2df ntdll!NtWaitForWorkViaWorkerFactory+0xa
00000000`036ce5f0 00000000`7518cf87 wow64!whNtWaitForWorkViaWorkerFactory+0x23
00000000`036ce640 00000000`7511276d wow64!Wow64SystemServiceEx+0xd7
00000000`036cef00 00000000`7518d07e wow64cpu!TurboDispatchJumpAddressEnd+0x24
00000000`036cefc0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`036cf010 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`036cf560 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`036cf5d0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

#  9  Id: 1140.d44 Suspend: 1 Teb: 00000000`7ef94000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0337faa8 00000000`77588638 ntdll!DbgBreakPoint
00000000`0337fab0 00000000`774f39cb ntdll!DbgUiRemoteBreakin+0x38
00000000`0337fae0 00000000`00000000 ntdll!RtlUserThreadStart+0x25

包含 com 组件的子进程:

0:009> ~*k

   0  Id: 10fc.76c Suspend: 1 Teb: 00000000`7efdb000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`001ae708 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`001ae710 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`001ae7d0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`001ae820 00000000`774d84c8 wow64!Wow64LdrpInitialize+0x429
00000000`001aed70 00000000`774d7623 ntdll!LdrpInitializeProcess+0x17e2
00000000`001af270 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bea0
00000000`001af2e0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   1  Id: 10fc.d18 Suspend: 1 Teb: 00000000`7efd8000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`005befb8 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`005befc0 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`005bf080 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`005bf0d0 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`005bf620 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`005bf690 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   2  Id: 10fc.c70 Suspend: 1 Teb: 00000000`7ef9d000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`027ced18 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`027ced20 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`027cede0 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`027cee30 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`027cf380 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`027cf3f0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   3  Id: 10fc.90c Suspend: 1 Teb: 00000000`7ef9a000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`02a2eb58 00000000`7511282c wow64cpu!CpupSyscallStub+0x9
00000000`02a2eb60 00000000`7518d07e wow64cpu!WaitForMultipleObjects32+0x32
00000000`02a2ec20 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`02a2ec70 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`02a2f1c0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`02a2f230 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   4  Id: 10fc.12ac Suspend: 1 Teb: 00000000`7ef97000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`029eed58 00000000`75112d92 wow64cpu!CpupSyscallStub+0x9
00000000`029eed60 00000000`7518d07e wow64cpu!Thunk0Arg+0x5
00000000`029eee20 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`029eee70 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`029ef3c0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`029ef430 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   5  Id: 10fc.b6c Suspend: 1 Teb: 00000000`7efd5000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`031de438 00000000`7513ac48 wow64win!ZwUserGetMessage+0xa
00000000`031de440 00000000`7518cf87 wow64win!whNtUserGetMessage+0x30
00000000`031de4a0 00000000`7511276d wow64!Wow64SystemServiceEx+0xd7
00000000`031ded60 00000000`7518d07e wow64cpu!TurboDispatchJumpAddressEnd+0x24
00000000`031dee20 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`031dee70 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`031df3c0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`031df430 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   6  Id: 10fc.15fc Suspend: 1 Teb: 00000000`7ef8b000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0295e938 00000000`75112bcd wow64cpu!CpupSyscallStub+0x9
00000000`0295e940 00000000`7518d07e wow64cpu!Thunk0ArgReloadState+0x1a
00000000`0295ea00 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0295ea50 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0295efa0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0295f010 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   7  Id: 10fc.16f4 Suspend: 1 Teb: 00000000`7ef7f000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0390edb8 00000000`75112bcd wow64cpu!CpupSyscallStub+0x9
00000000`0390edc0 00000000`7518d07e wow64cpu!Thunk0ArgReloadState+0x1a
00000000`0390ee80 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0390eed0 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0390f420 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0390f490 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   8  Id: 10fc.fb0 Suspend: 1 Teb: 00000000`7ef94000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`0366e138 00000000`751aa2df ntdll!NtWaitForWorkViaWorkerFactory+0xa
00000000`0366e140 00000000`7518cf87 wow64!whNtWaitForWorkViaWorkerFactory+0x23
00000000`0366e190 00000000`7511276d wow64!Wow64SystemServiceEx+0xd7
00000000`0366ea50 00000000`7518d07e wow64cpu!TurboDispatchJumpAddressEnd+0x24
00000000`0366eb10 00000000`7518c549 wow64!RunCpuSimulation+0xa
00000000`0366eb60 00000000`7750d177 wow64!Wow64LdrpInitialize+0x429
00000000`0366f0b0 00000000`774c308e ntdll! ?? ::FNODOBFM::`string'+0x2bfe4
00000000`0366f120 00000000`00000000 ntdll!LdrInitializeThunk+0xe

#  9  Id: 10fc.c5c Suspend: 1 Teb: 00000000`7ef91000 Unfrozen
Child-SP          RetAddr           Call Site
00000000`036cf748 00000000`77588638 ntdll!DbgBreakPoint
00000000`036cf750 00000000`774f39cb ntdll!DbgUiRemoteBreakin+0x38
00000000`036cf780 00000000`00000000 ntdll!RtlUserThreadStart+0x25

欢迎任何建议!谢谢

4

1 回答 1

0

您可以通过运行来识别挂起的线程:

!analyze -hang

或更好:

!locks

这将需要一些时间,但是,查看您的调用堆栈,您的组件显示正在等待多个对象的线程,那么它们正在等待的事件是否正确发出信号?您应该能够检查您的代码并遵循逻辑。

你也有NtWaitForWorkViaWorkerFactory我不知道这是做什么的,但它也是值得一试的。

于 2012-06-27T08:15:22.000 回答