Using x86_64 UltraVNC 1.2.0.1 viewer to connect. Also tried TightVNC Java viewer (see below for the difference it makes).
w8hook is installed, schook is not. Mirror driver is not installed.
Tried different settings (Poll fullscreen on/off, System Hook on/off), no effect.
Porblem is that keystrokes sent by the viewer to the server cause the server to hang up for a short period of time.
This happens when there are multiple keystrokes in quick succession (around 4).
I.e. open anything with keyboard input, start typing something, fast, and the server will hang up.
Hanged server does not send screen updates and does not accept mouse input from the viewer (and keyboard input too, obviously).
On server side keystrokes are realized, a few at a time. I.e. if you typed "qweqweqweqweqweqwe", you will see "qweq", then, after a couple of seconds, "qweqwe", then, after waiting a bit, "qweqweqweq", and so on, until all the keystrokes the viewer sent are there. Once the keystroke buffer is emptied, the server unhangs and starts sending updates and accept input. Until you start typing something fast again, that is.
Also, while this is happening, Windows 8.1 on the server side becomes nearly 100% unresponsive to mouse clicks. It still reacts to local keyboard input normally, and still registers local mouse movement (interactive elements react when you hover mouse over them), but clicks almost never get through.
Also, while this is happening, dwm.exe CPU and GPU consumption, which is usually fairly high during VNC session, drops to zero (i.e. screen capture is not functioning on server side).
While server is hung up, winvnc.exe (the second process; the child, not the parent) consumes 100% of a CPU core. Since i have no debug symbols for winvnc.exe that are compatible with Process Hacker's thread call stack viewer, i have no idea what kinds of functions are being called, the top stack elements after winvnc.exe are:
Code: Select all
0, ntoskrnl.exe!KiDeliverApc+0x128
1, ntoskrnl.exe!KeSetEvent+0xa2c
2, ntoskrnl.exe!ExReleaseResourceLite+0x355
3, ntoskrnl.exe!ExReleaseResourceAndLeavePriorityRegion+0xd
4, ntoskrnl.exe!wcsncpy_s+0x7a87
5, ntdll.dll!KiFastSystemCallRet
1) Sending repeating keystrokes of one single key does not cause server to hang up. I.e. pressing a single key and keeping it pressed down works OK. Both for character keys and for functional keys (at least for Backspace).
Removing w8hook.dll does not remove the problem, but does eliminate winvnc.exe 100% CPU consumption while server is hung up.
Removing uvnckeyboardhelper.exe removes the problem (obviously that is not a solution, as uvnckeyboardhelper is needed at the very least for Alt-Tab to work).