MSTSC + gateway crashes on auto reconnect

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()

Solution 1:

We found that this i related to the Login Message on the Gateway. If you disable the login message on the Gateway it works!

I do not now why it happens. But it is a quick fix. And we hope microsoft will correct this bug.