Vector35/debugger

Windows debugger cannot launch the target when used in a VM without any network interface

Opened this issue · 4 comments

The user tries to debug a binary in a Hype-V VM. The VM has no internet connection. The error message is:

ConnectToDebugServerInternal timeout
Failed to connect process server

On the other hand, things work perfectly when the VM is connected to the Internet.

I suspect this is related to the synbol server handling in DbgEng, but it is still weird because this failure is so early. Previously, I have observed a hang when one uses the debugger on a box that appears to have network, but is not actually connected to the Internet

I can also reproduce this on a Virtualbox VM with no network interface configured

Also this has nothing to do with Internet, I tested and found that, as long as there is a network interface, even if it is not attached to anything, the debugging will work. A temporary workaround for this issue is to create a network interface for the VM, but do not attach it to any actual network

This is more complicated than I have expected. It seems a bug in the DbgEng DLLs. I can reproduce this with the dbgsrv.exe that omes with WinDbg as well. However, this is really not expected -- things should just work in the same way.

I checked and WinDbg is doing the debugging slightly different than our approach. It is running an EngHost.exe (which seems to be an engine host), and then use DebugConnect (https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/dbgeng/nf-dbgeng-debugconnect) to connect to it. DebugConnect does not have the same bug

However, using DebugConnect seems to require that the access to the engine to be made from the same thread, which our current implementation is violating.