We have an application that is used as a RemoteApp. Users access the RemoteApp via gateway.
We are experiencing crashes with users running MSTSC v.6.3 on Win64 (tested with Windows 7 and Windows 8) every time an abnormal disconnection happens (connectivity failure).
Typical crash is an access violation inside MSTSC with error message "Remote Desktop Connection has stopped working". but sometimes MSTSC just freeze. Event viewer shows "Application Error", event id 1000, exception code 0xC0000005 (== access violation).
MSTSC v.6.2 or earlier on Win64 or MSTSC (any version) on Win32 works fine.
There is no crashes if we allow users access directly TS servers, bypassing the gateway server. In this case, after a connectivity failure, MSTSC auto reconnection is successfull.
Does anybody knows a workround or fix for this problem? Any help is welcome.
Additional infomation from Event Viewer:
Faulting application name: mstsc.exe, version: 6.3.9600.16415, timestamp: 0x524b5b3d Faulting module name: mstscax.dll, version: 6.3.9600.16503, timestamp: 0x52c5f878 Exception code: 0xc0000005 Fault offset: 0x0000000000439b7a Faulting process id: 0x1658 Faulting application start time: 0x01cf84a3cfff7048 Faulting application path: C:\Windows\system32\mstsc.exe Faulting module path: C:\Windows\system32\mstscax.dll
Stack trace from Visual Studio Express 2012 debugger:
mstscax.dll!CClientProxyTransport::SetErrorStatus(long) mstscax.dll!CClientProxyTransport::GetErrorStatus(long,class CClientProxyTransport *) mstscax.dll!CProxyClientSendPacket::OnComplete(long,unsigned long) mstscax.dll!CAAAsyncSend::OnComplete(long) mstscax.dll!CAARpcClientChannel::Shutdown(unsigned long,class IAAAsyncOperation *) mstscax.dll!CAAAsyncDisconnectChannel::Invoke(unsigned long,class CAAChannel *,class IAATransportChannel *) mstscax.dll!CAAChannel::DisconnectInternal(int,long) mstscax.dll!CAARpcClientChannel::HandleReceiveComplete(struct _RPC_ASYNC_STATE *) mstscax.dll!CAARpcClientChannel::HandleIOCompletion(struct _OVERLAPPED *,unsigned long) mstscax.dll!CAagIO::AAGIoThreadFunc(void *) kernel32.dll!BaseThreadInitThunk() ntdll.dll!RtlUserThreadStart()