Windows Vista中的Microsoft异步RPC崩溃

Windows Vista中的Microsoft异步RPC崩溃,windows,crash,operating-system,rpc,windows-vista,Windows,Crash,Operating System,Rpc,Windows Vista,我正在开发一个程序,当客户端和服务器在同一台机器上运行时,该程序进行RPC调用。我希望客户端对服务器的调用有一个超时,因为我们遇到了在服务器上等待时变得无响应的问题 为了解决这个问题,我们使用了一个异步RPC调用,并在超时时取消它 这在XP中运行良好,但现在我在Vista中发现了崩溃,我有一个测试程序,每次都可以重现这些崩溃(仅在Vista中,而不是在XP中)。这似乎是微软方面的一个缺陷。崩溃线程的调用堆栈不包括对代码的任何调用。以下是来自崩溃转储的信息: Call stack: rpcrt4!

我正在开发一个程序,当客户端和服务器在同一台机器上运行时,该程序进行RPC调用。我希望客户端对服务器的调用有一个超时,因为我们遇到了在服务器上等待时变得无响应的问题

为了解决这个问题,我们使用了一个异步RPC调用,并在超时时取消它

这在XP中运行良好,但现在我在Vista中发现了崩溃,我有一个测试程序,每次都可以重现这些崩溃(仅在Vista中,而不是在XP中)。这似乎是微软方面的一个缺陷。崩溃线程的调用堆栈不包括对代码的任何调用。以下是来自崩溃转储的信息:

Call stack:
rpcrt4!_SEH_epilog4_GS+0x3979
rpcrt4!LRPC_CCALL::AbortCall+0x68
rpcrt4!LRPC_BASE_CCALL::HandleCancelMessage+0x6b
rpcrt4!LRPC_CCALL::HandleCancelMessage+0x42
rpcrt4!LRPC_CASSOCIATION::IoCompleted+0x341
rpcrt4!ProcessLrpcComplete+0x3b
rpcrt4!LOADABLE_TRANSPORT:Stick out tonguerocessIOEvents+0x212
rpcrt4!ProcessIOEventsWrapper+0xd
rpcrt4!BaseCachedThreadRoutine+0x5c
rpcrt4!ThreadStartRoutine+0x1e
kernel32!BaseThreadInitThunk+0xe
ntdll!__RtlUserThreadStart+0x23
ntdll!_RtlUserThreadStart+0x1b

Problem:
(ee4.139c): Access violation - code c0000005 (first/second chance not
available)
eax=01e0fcc4 ebx=002f8930 ecx=002f87e4 edx=002f87fc esi=002f87b0 edi=00000000
eip=76f08d9e esp=0200fe2c ebp=0200fe34 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206
rpcrt4!_SEH_epilog4_GS+0x3979:
76f08d9e a300000000 mov dword ptr ds:[00000000h],eax
ds:0023:00000000=????????

我想知道是否有人有过类似的问题,并找到了解决办法?在这种情况下,最好使用RPC以外的东西?

这是服务器崩溃还是客户端崩溃?什么是“伸出舌头”?那是跟踪/输出调试字符串输出吗?