RDP – Win32k Network I/O Blocking Problem

After nagging for days, I’ve finally gotten Ken to agree to let me post his analysis of a really interesting kernel locking issue. He’s one of the best there is with a debugger, and is working without symbols the whole way through here, debugging third-party components from two different companies.

Worth a read, if you’re into this sort of thing.

RDP – Win32k Network I/O Blocking Problem

3 Responses to “RDP – Win32k Network I/O Blocking Problem”

  1. Chris says:

    I think I’ve had this problem before, with RDP tunneled over a SSH server in SFU on the same machine and session. SFU processes don’t actually have handles to sockets or AFD endpoints themselves, but instead proxy all socket operations (with a LPC port I guess) over to psxss.exe (which is a Win32 client process) to wsock32.dll.

    When I tried to make an RDP connection, the server just stalled for about 20 seconds until the connection timed out. What’s also a little odd is that Cygwin’s ssh server works fine. I guess it doesn’t call the Win32 messaging functions, whereas psxss does.

    Besides the apparent race conditions, and ugly cross dependencies, it seems like making all network ops would out of process be bad for performance. Doesn’t microsoft have AFD documented internally well enough to make a real posix subsystem socket library? I hope this gets cleaned up in SFU 4.

    Oh well. At least I know what the deal is. Keep posting stuff like this!

  2. dispensa says:

    I thought they were discontinuing SFU after 3.5, but a quick search on microsoft.com failed to turn up evidence of that. Maybe I hallucinated it.

  3. Chris says:

    It’s being renamed to Subsystem for Unix Applications (SUA) and being bundled with Vista Enterprise. IDK if it will be available stand-alone. See http://www.microsoft.com/licensing/programs/sa/benefits/vista.mspx

Leave a Reply