Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Microsoft Remote Desktop sometimes crashes on connect #1869

Open
metalefty opened this issue Apr 27, 2021 · 17 comments
Open

Microsoft Remote Desktop sometimes crashes on connect #1869

metalefty opened this issue Apr 27, 2021 · 17 comments
Labels

Comments

@metalefty
Copy link
Member

Client: Microsoft Remote Desktop (Store version) 10.2.1810.0

2021-04-27.13.07.16.mov

スクリーンショット 2021-04-27 13 11 40

Server

xrdp 5bb9d98 has this issue. However, 0.9.12 doesn't have this issue. It might be a regression of on-the-fly resizing but I'm still not sure. I haven't confirmed with other versions of xrdp.

Workaround

Don't use "ask login credentials every time".
Connect with saved credentials. It will bypass xrdp's login dialog so the client doesn't crash.

@matt335672
Copy link
Member

I've confirmed this on this platform:-

  • Windows 10 20H2 (19042.928)
  • RDP client 10.2.1810.0 (as above)
  • Laptop with single screen, resolution 1366x768

Another workaround is to set security_layer=rdp in xrdp..ini. So this may be nothing to do with drawing the dialog box.

I'll run a git bisect and see if I can identify the commit.

@matt335672
Copy link
Member

I'm experiencing the issue on the 0.9.12 checkout, so there's something more complex going on here. I've tried various config options.

When the crash happens I'm getting the following in the Windows event log:-

 <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Version>0</Version> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2021-04-27T08:21:06.1566956Z" /> 
  <EventRecordID>1321</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>DESKTOP-OLT894V</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>RdClient.Windows.exe</Data> 
  <Data>1.0.0.0</Data> 
  <Data>60411c6c</Data> 
  <Data>RdClientWinRT.dll</Data> 
  <Data>1.0.2102.24</Data> 
  <Data>6036e9bb</Data> 
  <Data>c0000005</Data> 
  <Data>00000000003f7d35</Data> 
  <Data>1764</Data> 
  <Data>01d73b3e42daae35</Data> 
  <Data>C:\Program Files\WindowsApps\Microsoft.RemoteDesktop_10.2.1810.0_x64__8wekyb3d8bbwe\RdClient.Windows.exe</Data> 
  <Data>C:\Program Files\WindowsApps\Microsoft.RemoteDesktop_10.2.1810.0_x64__8wekyb3d8bbwe\RdClientWinRT.dll</Data> 
  <Data>df2bcbf5-f5cf-4508-87da-302d43433ac6</Data> 
  <Data>Microsoft.RemoteDesktop_10.2.1810.0_x64__8wekyb3d8bbwe</Data> 
  <Data>App</Data> 
  </EventData>
  </Event>

@metalefty - how are you configuring v0.9.12 when this is working?

@metalefty
Copy link
Member Author

@matt335672 I can not see the whole configuration right now but I'm certain security_layer=rdp at least. I'll paste the whole configuration later.

@Nexarian
Copy link
Contributor

In my testing I can confirm that this issue was not related to the resizing code and has been around for at least some time, and I had learned that setting sec=rdp helped fix this long before I started working on resizing (Try it with FreeRDP and you'll see the same results most of the time). In my testing this error was not 100% deterministic, which suggests a threading race condition of some sort.

While it may not help, @jsorg71 had added a fix to his egfx branch that repaired at least some of the login scenarios, but it might only be specific to the gfx PR: jsorg71@0a581a7

I can do more testing later this week.

@Nexarian
Copy link
Contributor

Another scenario: Try populating your auto-login credentials with known invalid ones, like username: foo, password: bar, and the login dialog will come up.

@Nexarian
Copy link
Contributor

Yet another scenario that I've found funny:

  1. Try to connect to XRDP
    Failure expected
  2. sudo service xrdp restart
  3. Try to connect again
    Result: Success

@metalefty
Copy link
Member Author

Here's my xrdp.ini of 0.9.12. It is identical to stock Ubuntu 20.04 installation.

xrdp.ini

[Globals]
; xrdp.ini file version number
ini_version=1

; fork a new process for each incoming connection
fork=true

; ports to listen on, number alone means listen on all interfaces
; 0.0.0.0 or :: if ipv6 is configured
; space between multiple occurrences
;
; Examples:
;   port=3389
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3389                           127.0.0.1:3389
;   port=tcp://:3389                            *:3389
;   port=tcp://:3389      192.168.1.1:3389
;   port=tcp6://.:3389                          ::1:3389
;   port=tcp6://:3389                           *:3389
;   port=tcp6://{}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://:
port=3389

; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
; prefer use vsock://: above
use_vsock=false

; regulate if the listening socket use socket option tcp_nodelay
; no buffering will be performed in the TCP stack
tcp_nodelay=true

; regulate if the listening socket use socket option keepalive
; if the network connection disappear without close messages the connection will be closed
tcp_keepalive=true

; set tcp send/recv buffer (for experts)
#tcp_send_buffer_bytes=32768
#tcp_recv_buffer_bytes=32768

; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate

; minimum security level allowed for client for classic RDP encryption
; use tls_ciphers to configure TLS encryption
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high

; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
; note this needs the user xrdp to be a member of the ssl-cert group, do with e.g.
;$ sudo adduser xrdp ssl-cert
certificate=
key_file=

; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH

; Section name to use for automatic login if the client sends username
; and password. If empty, the domain name sent by the client is used.
; If empty and no domain name is given, the first suitable section in
; this file will be used.
autorun=

allow_channels=true
allow_multimon=true
bitmap_cache=true
bitmap_compression=true
bulk_compression=true
#hidelogwindow=true
max_bpp=32
new_cursors=true
; fastpath - can be 'input', 'output', 'both', 'none'
use_fastpath=both
; when true, userid/password *must* be passed on cmd line
#require_credentials=true
; You can set the PAM error text in a gateway setup (MAX 256 chars)
#pamerrortxt=change your password according to policy at http://url

;
; colors used by windows in RGB format
;
blue=009cb5
grey=dedede
#black=000000
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

;
; configure login screen
;

; Login Screen Window Title
#ls_title=My Login Title

; top level window background color in RGB format
ls_top_window_bg_color=009cb5

; width and height of login screen
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename (bmp format).
#ls_background_image=

; logo
; full path to bmp-file or file in shared folder
ls_logo_filename=
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=65

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

[Logging]
LogFile=xrdp.log
LogLevel=DEBUG
EnableSyslog=true
SyslogLevel=DEBUG
; LogLevel and SysLogLevel could by any of: core, error, warning, info or debug

[Channels]
; Channel names not listed here will be blocked by XRDP.
; You can block any channel by setting its value to false.
; IMPORTANT! All channels are not supported in all use
; cases even if you set all values to true.
; You can override these settings on each session type
; These settings are only used if allow_channels=true
rdpdr=true
rdpsnd=true
drdynvc=true
cliprdr=true
rail=true
xrdpvr=true
tcutils=true

; for debugging xrdp, in section xrdp1, change port=-1 to this:
#port=/tmp/.xrdp/xrdp_display_10

; for debugging xrdp, add following line to section xrdp1
#chansrvport=/tmp/.xrdp/xrdp_chansrv_socket_7210


;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
#xserverbpp=24
#delay_ms=2000

[vnc-any]
name=vnc-any
lib=libvnc.so
ip=ask
port=ask5900
username=na
password=ask
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

[neutrinordp-any]
name=neutrinordp-any
lib=libxrdpneutrinordp.so
ip=ask
port=ask3389
username=ask
password=ask

; You can override the common channel settings for each session type
#channel.rdpdr=true
#channel.rdpsnd=true
#channel.drdynvc=true
#channel.cliprdr=true
#channel.rail=true
#channel.xrdpvr=true

@matt335672
Copy link
Member

matt335672 commented Apr 28, 2021

I've just had another look into this, and my experiences are as follows:-

  • If I run with any version of xrdp with TLS selected using the remote desktop saved settings (as per the video above), the client crashes. This include v0.9.12 with @metalefty's config above, and even happens on a stock install of xrdp 0.9.5 on Ubuntu 18.04.
  • If I open an RDP file using the same client (i.e. right-click, select "Open With...", select "Remote Desktop") the client doesn't crash. I'm pretty sure this is how I tested all of @Nexarian's changes.
  • The client crash happens early. We get a client Negotiate Request PDU and we respond with a Negotiate Response PDU and then the client crashes. Note this is before the actual TLS negotiation starts.
  • In both the working and broken configs we send identical data in the negotiate response PDU (flags = EXTENDED_CLIENT_DATA_SUPPORTED, selectedProtocol = PROTOCOL_SSL). Here's a wireshark dump of a failing connect:-
    wireshark
  • I think Windows server will use one of the CredSSP responses in the negotiate response PDU (even with NLA disabled), and so this doesn't arise with Windows clients. I've taken a Windows 10 install, enabled RDP and disabled NLA. The negotiate response PDU contains selectedProtocol=PROTOCOL_HYBRID_EX

In short, this very much seems to be a client problem. I can't see a way to work around it from our end, short of implementing NLA as we're sending the same data when the crash occurs as when it doesn't occur.

@Nexarian
Copy link
Contributor

Curious, how does FreeRDP handle it?

@Nexarian
Copy link
Contributor

Also: What about MSTSC?

@metalefty metalefty changed the title Microsoft Remote Desktop crashes when drawing xrdp login dialog Microsoft Remote Desktop sometimes crashes on connect Apr 29, 2021
@matt335672
Copy link
Member

I've just run up with remmina version 1.4.11 on our latest wavefront, and the initial packet trace goes as follows:-

  1. Client->Server. Negotiate Request PDU with RequestedProtocols=0x00000003 (TLS security supported, CredSSP supported)
  2. Server->Client : Negotiate Response PDU with flags = EXTENDED_CLIENT_DATA_SUPPORTED, selectedProtocol = PROTOCOL_SSL).
  3. Client->Server. TLS 1.3 Client Hello

In other words, the same as the MS client, but there's no crash. Login screen is displayed as expected.

With MSTSC on Windows 10 things are identical except:-

  • the initial negotiate request contains an (ignored) Routing Cookie
  • the initial negotiate request PDU contains requestedProtocols=0x0000000b (TLS security supported, CredSSP supported, Early User Authorization Result PDU supported)
  • The client hello is only TLS 1.2

Again, there's no crash. Login screen is displayed as expected.

The code on our side is

xrdp_iso_incoming(struct xrdp_iso *self)

So I've seen nothing further to suggest any way we can fix this on our side in the short term.

@Nexarian
Copy link
Contributor

Nexarian commented Apr 29, 2021

We should submit a bug to Microsoft then.

@matt335672
Copy link
Member

I'd love to. The major question is 'how'?

I've posted a message to MS Q&A here:-

https://docs.microsoft.com/en-us/answers/questions/378751/crash-in-rdclientwinrtdll-version-10210224-without.html

Since we have no other support avenues for MS, I'm not confident of a response. It is however, the best I could think of. I'm open to further suggestions.

@matt335672
Copy link
Member

Following a suggestion from Nexarian, I've attempted to look at the problem using windbg.

I've not managed to get anywhere sadly. The remote desktop store app is a WinRt app which may have something to do with it.Here's the output I could get:-

Header
Microsoft (R) Windows Debugger Version 10.0.19041.685 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Loading Dump File [C:\Users\mjb\rd.dump]
User Mini Dump File: Only registers, stack and portions of memory are available

Symbol search path is: srv*
Executable search path is:
Windows 10 Version 19042 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS Personal
19041.1.amd64fre.vb_release.191206-1406
Machine Name:
Debug session time: Thu May 6 11:05:35.000 2021 (UTC + 1:00)
System Uptime: not available
Process Uptime: 0 days 0:01:14.000
................................................................
................................................................
.................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(1a04.122c): Access violation - code c0000005 (first/second chance not available)
For analysis of this file, run !analyze -v
*** WARNING: Unable to verify checksum for RdClientWinRT.dll
RdClientWinRT!DllGetActivationFactory+0x392d05:
00007ffc10767d35 66833a00 cmp word ptr [rdx],0 ds:0000000000000000=????

analyze -v
0:038> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

*** WARNING: Unable to verify checksum for RdClient.Windows.dll
*** WARNING: Unable to verify checksum for MsRdcWebRTCAddin.dll

KEY_VALUES_STRING: 1

Key  : AV.Dereference
Value: NullPtr

Key  : AV.Fault
Value: Read

Key  : Analysis.CPU.Sec
Value: 31

Key  : Analysis.DebugAnalysisProvider.CPP
Value: Create: 8007007e on DESKTOP-OLT894V

Key  : Analysis.DebugData
Value: CreateObject

Key  : Analysis.DebugModel
Value: CreateObject

Key  : Analysis.Elapsed.Sec
Value: 662

Key  : Analysis.Memory.CommitPeak.Mb
Value: 346

Key  : Analysis.System
Value: CreateObject

Key  : Timeline.Process.Start.DeltaSec
Value: 74

CONTEXT: (.ecxr)
rax=0000000000000000 rbx=0000000000000000 rcx=521f0717d8d20000
rdx=0000000000000000 rsi=00007ffc10e72c60 rdi=0000000000000000
rip=00007ffc10767d35 rsp=00000015f59fbed0 rbp=00000015f59fbfd0
r8=0000000000000000 r9=0000000000000000 r10=00007ffc10dfb521
r11=00007ffc10dfb521 r12=0000000000000001 r13=00000000ffffffff
r14=00007ffc10df59f8 r15=000001a0f753bc70
iopl=0 nv up ei pl zr na po nc
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
RdClientWinRT!DllGetActivationFactory+0x392d05:
00007ffc10767d35 66833a00 cmp word ptr [rdx],0 ds:0000000000000000=????
Resetting default scope

EXCEPTION_RECORD: (.exr -1)
ExceptionAddress: 00007ffc10767d35 (RdClientWinRT!DllGetActivationFactory+0x0000000000392d05)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000000
Parameter[1]: 0000000000000000
Attempt to read from address 0000000000000000

PROCESS_NAME: RdClient.Windows.exe

READ_ADDRESS: 0000000000000000

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

EXCEPTION_CODE_STR: c0000005

EXCEPTION_PARAMETER1: 0000000000000000

EXCEPTION_PARAMETER2: 0000000000000000

STACK_TEXT:
00000015f59fbed0 00007ffc10761123 : 000001a0f71c64d0 0000000000000000 000001a0f753a410 000001a0f78066c8 : RdClientWinRT!DllGetActivationFactory+0x392d05
00000015f59fd730 00007ffc1075d839 : 0000000000000000 000001a0f753a500 000001a0f50863b0 000001a0f744c820 : RdClientWinRT!DllGetActivationFactory+0x38c0f3
00000015f59fd980 00007ffc1062e28b : 000001a0f751db10 000001a0f744c820 000001a0f50863b0 000001a0f744c820 : RdClientWinRT!DllGetActivationFactory+0x388809
00000015f59fdb60 00007ffc105ef2a7 : 000001a0f744c820 00007ffc1080a98d 000001a0f7124910 0000000021e47c37 : RdClientWinRT!DllGetActivationFactory+0x25925b
00000015f59fdb90 00007ffc1072d05a : 0000520af2880322 000001a0f744c820 000001a0f50863b0 0000000021e47c37 : RdClientWinRT!DllGetActivationFactory+0x21a277
00000015f59fdda0 00007ffc1072e69d : 000001a0f744c820 000001a0f744c820 000001a0f50863b0 000001a0f75a9d80 : RdClientWinRT!DllGetActivationFactory+0x35802a
00000015f59fde00 00007ffc1072e1a9 : 000001a0f751db70 0000000000000001 000001a0f75a9ce0 00000015f59fdf80 : RdClientWinRT!DllGetActivationFactory+0x35966d
00000015f59fde80 00007ffc10731b59 : 0000000000000000 0000000000000000 000001a0f751db10 0000000000000002 : RdClientWinRT!DllGetActivationFactory+0x359179
00000015f59fe300 00007ffc1073230a : 00000000ffffffff 00000000ffffffff 000001a0f751db10 0000000000000000 : RdClientWinRT!DllGetActivationFactory+0x35cb29
00000015f59fe750 00007ffc107307e7 : 00000015f59feec0 00007ffc10539126 000001a0f71e5f90 0000000000000000 : RdClientWinRT!DllGetActivationFactory+0x35d2da
00000015f59fed80 00007ffc10634a78 : 000001a0f71e5f90 00007ffc10df59f8 0000000000000001 0000000000000002 : RdClientWinRT!DllGetActivationFactory+0x35b7b7
00000015f59fedc0 00007ffc106347d9 : 000001a0f71c64e0 00007ffc10df59f8 000001a0f71e5f90 000001a0f75cbf30 : RdClientWinRT!DllGetActivationFactory+0x25fa48
00000015f59fefa0 00007ffc1072fdf4 : 000001a0f751db10 000001a0f751db10 00007ffc10df59f8 000001a0f75cbf30 : RdClientWinRT!DllGetActivationFactory+0x25f7a9
00000015f59ff170 00007ffc1080cd34 : 0000000000000000 00000015f50fd7c0 00007ffc10370000 00007ffc1072f670 : RdClientWinRT!DllGetActivationFactory+0x35adc4
00000015f59ff890 00007ffc469e7034 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : RdClientWinRT!DllGetActivationFactory+0x437d04
00000015f59ff8c0 00007ffc47862651 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : kernel32!BaseThreadInitThunk+0x14
00000015f59ff8f0 0000000000000000 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : ntdll!RtlUserThreadStart+0x21

SYMBOL_NAME: RdClientWinRT!DllGetActivationFactory+392d05

MODULE_NAME: RdClientWinRT

IMAGE_NAME: RdClientWinRT.dll

STACK_COMMAND: ~38s ; .ecxr ; kb

FAILURE_BUCKET_ID: NULL_POINTER_READ_c0000005_RdClientWinRT.dll!DllGetActivationFactory

OS_VERSION: 10.0.19041.1

BUILDLAB_STR: vb_release

OSPLATFORM_TYPE: x64

OSNAME: Windows 10

FAILURE_ID_HASH: {97b71d8a-6580-3da7-9fa4-b8b221a45522}

Followup: MachineOwner
---------

0:038>
ExceptionAddress: 00007ffc10767d35 (RdClientWinRT!DllGetActivationFactory+0x0000000000392d05)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000000
Parameter[1]: 0000000000000000
Attempt to read from address 0000000000000000

kp
0:038> kp
 # Child-SP          RetAddr           Call Site
00 00000015`f59fbed0 00007ffc`10761123 RdClientWinRT!DllGetActivationFactory+0x392d05
01 00000015`f59fd730 00007ffc`1075d839 RdClientWinRT!DllGetActivationFactory+0x38c0f3
02 00000015`f59fd980 00007ffc`1062e28b RdClientWinRT!DllGetActivationFactory+0x388809
03 00000015`f59fdb60 00007ffc`105ef2a7 RdClientWinRT!DllGetActivationFactory+0x25925b
04 00000015`f59fdb90 00007ffc`1072d05a RdClientWinRT!DllGetActivationFactory+0x21a277
05 00000015`f59fdda0 00007ffc`1072e69d RdClientWinRT!DllGetActivationFactory+0x35802a
06 00000015`f59fde00 00007ffc`1072e1a9 RdClientWinRT!DllGetActivationFactory+0x35966d
07 00000015`f59fde80 00007ffc`10731b59 RdClientWinRT!DllGetActivationFactory+0x359179
08 00000015`f59fe300 00007ffc`1073230a RdClientWinRT!DllGetActivationFactory+0x35cb29
09 00000015`f59fe750 00007ffc`107307e7 RdClientWinRT!DllGetActivationFactory+0x35d2da
0a 00000015`f59fed80 00007ffc`10634a78 RdClientWinRT!DllGetActivationFactory+0x35b7b7
0b 00000015`f59fedc0 00007ffc`106347d9 RdClientWinRT!DllGetActivationFactory+0x25fa48
0c 00000015`f59fefa0 00007ffc`1072fdf4 RdClientWinRT!DllGetActivationFactory+0x25f7a9
0d 00000015`f59ff170 00007ffc`1080cd34 RdClientWinRT!DllGetActivationFactory+0x35adc4
0e 00000015`f59ff890 00007ffc`469e7034 RdClientWinRT!DllGetActivationFactory+0x437d04
0f 00000015`f59ff8c0 00007ffc`47862651 kernel32!BaseThreadInitThunk+0x14
10 00000015`f59ff8f0 00000000`00000000 ntdll!RtlUserThreadStart+0x21

The lack of a symbolic trace seems related to this error:-

*** WARNING: Unable to verify checksum for RdClient.Windows.dll

@Nexarian
Copy link
Contributor

Nexarian commented May 6, 2021

Look up the documentation on how to connect to Microsoft's public symbol servers. It's a bit of an arcane command/UI option if I remember correctly, but it is documented and the servers are reliable. But it shouldn't be a checksum issue, I think you just need the symbols. They are gigantic files which is why you have to set this up yourself, Microsoft wanted to make sure you really wanted to download them before they were enabled.

Here's some documentation that may help:

Let me know if you need help with figuring this part out.

@matt335672
Copy link
Member

windbg is all set up to connect to the symbol servers. Symbol search path is cache*;SRV*https://msdl.microsoft.com/download/symbols"

Sadly, I think what the message means is that the dll checksum is not found on the symbol servers. I think this is something to do with it being a WinRt app. I've even checked this isn't a file permissions issue which was hard enough to do with the c:\Program Files\WindowsApps directory.

I've used the !sym noisy commandf in windbg which illustrates the issue:-


Microsoft (R) Windows Debugger Version 10.0.19041.685 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\Users\mjb\rd.dump]
User Mini Dump File: Only registers, stack and portions of memory are available

Symbol search path is: srv*
Executable search path is: 
Windows 10 Version 19042 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS Personal
19041.1.amd64fre.vb_release.191206-1406
Machine Name:
Debug session time: Thu May  6 11:05:35.000 2021 (UTC + 1:00)
System Uptime: not available
Process Uptime: 0 days 0:01:14.000
................................................................
................................................................
.................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(1a04.122c): Access violation - code c0000005 (first/second chance not available)
For analysis of this file, run !analyze -v
*** WARNING: Unable to verify checksum for RdClientWinRT.dll
RdClientWinRT!DllGetActivationFactory+0x392d05:
00007ffc`10767d35 66833a00        cmp     word ptr [rdx],0 ds:00000000`00000000=????
0:038> !sym noisy
noisy mode - symbol prompts on
0:038> .reload
................................................................
................................................................
.................
SYMSRV:  BYINDEX: 0x6
         C:\ProgramData\dbg\sym
         RdClientWinRT.dll
         6036E9BB1101000
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\RdClientWinRT.dll - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\RdClientWinRT.dl_ - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\file.ptr - path not found
SYMSRV:  RESULT: 0x80070003
SYMSRV:  BYINDEX: 0x7
         C:\ProgramData\dbg\sym*https://msdl.microsoft.com/download/symbols
         RdClientWinRT.dll
         6036E9BB1101000
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\RdClientWinRT.dll - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\RdClientWinRT.dl_ - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.dll/6036E9BB1101000/RdClientWinRT.dll
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.dll/6036E9BB1101000/RdClientWinRT.dl_
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.dll/6036E9BB1101000/file.ptr
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  RESULT: 0x80190194
DBGHELP: C:\Program Files (x86)\Windows Kits\10\Debuggers\RdClientWinRT.dll - file not found
SYMSRV:  BYINDEX: 0x8
         https://msdl.microsoft.com/download/symbols
         RdClientWinRT.dll
         6036E9BB1101000
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\RdClientWinRT.dll - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\RdClientWinRT.dl_ - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.dll\6036E9BB1101000\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.dll/6036E9BB1101000/RdClientWinRT.dll
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.dll/6036E9BB1101000/RdClientWinRT.dl_
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.dll/6036E9BB1101000/file.ptr
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  RESULT: 0x80190194
DBGENG:  C:\Program Files\WindowsApps\Microsoft.RemoteDesktop_10.2.1810.0_x64__8wekyb3d8bbwe\RdClientWinRT.dll - Mapped image memory
SYMSRV:  BYINDEX: 0x9
         C:\ProgramData\dbg\sym
         RdClientWinRT.pdb
         A22A5B9E51C84304A5507C57AE3EC3DA1
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.pdb\A22A5B9E51C84304A5507C57AE3EC3DA1\RdClientWinRT.pdb - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.pdb\A22A5B9E51C84304A5507C57AE3EC3DA1\RdClientWinRT.pd_ - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.pdb\A22A5B9E51C84304A5507C57AE3EC3DA1\file.ptr - path not found
SYMSRV:  RESULT: 0x80070003
SYMSRV:  BYINDEX: 0xA
         C:\ProgramData\dbg\sym*https://msdl.microsoft.com/download/symbols
         RdClientWinRT.pdb
         A22A5B9E51C84304A5507C57AE3EC3DA1
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.pdb\A22A5B9E51C84304A5507C57AE3EC3DA1\RdClientWinRT.pdb - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.pdb\A22A5B9E51C84304A5507C57AE3EC3DA1\RdClientWinRT.pd_ - path not found
SYMSRV:  UNC: C:\ProgramData\dbg\sym\RdClientWinRT.pdb\A22A5B9E51C84304A5507C57AE3EC3DA1\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.pdb/A22A5B9E51C84304A5507C57AE3EC3DA1/RdClientWinRT.pdb
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.pdb/A22A5B9E51C84304A5507C57AE3EC3DA1/RdClientWinRT.pd_
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/RdClientWinRT.pdb/A22A5B9E51C84304A5507C57AE3EC3DA1/file.ptr
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  RESULT: 0x80190194
DBGHELP: RdClientWinRT.pdb - file not found
DBGHELP: E:\BA\50\b\release\x64\RdClientWinRT.pdb - file not found
*** WARNING: Unable to verify checksum for RdClientWinRT.dll
DBGHELP: RdClientWinRT - export symbols

************* Symbol Loading Error Summary **************
Module name            Error
RdClientWinRT          The system cannot find the file specified
				The SYMSRV client failed to find a file in the UNC store, or there
				is an invalid UNC store (an invalid path or the pingme.txt file is
				not present in the root directory), or the file is present in the
				symbol server exclusion list.

@Nexarian
Copy link
Contributor

Nexarian commented May 8, 2021

Ugh, that's annoying, My guess is that they aren't uploading the symbols for this particular app and that WinRT is treated differently.

I was trying to figure out how to get the logs for this as well. I know how to see logs from it in Mac OS X, just not with the Windows version. The closest I was able to get was to find the logs for msrdc.exe, which is a slightly different pivot on this application, which doesn't even have a very clear name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants