[debugger] Don't list finalizer gc thread if it's not executing managed code (#15618)
commit73128453daff8966f1c8eeacb734579971b02218
authorThays Grazia <thaystg@gmail.com>
Mon, 15 Jul 2019 14:58:04 +0000 (15 11:58 -0300)
committerGitHub <noreply@github.com>
Mon, 15 Jul 2019 14:58:04 +0000 (15 11:58 -0300)
tree7f1b7ad5e73916152ede7b473e3ffb2692bec46b
parentd85fe2c391140064957a76e3404dc85c214c0ddf
[debugger] Don't list finalizer gc thread if it's not executing managed code (#15618)

* The example that reproduces the bug does this:
var thread = vm.GetThreads()[0];
greetingValue = program.InvokeMethod(thread, greeting, new Value[0]) as StringMirror;

But sometimes the Thread[0] was the MainThread of the program and it works, and other times was the GC Finalizer, but when it tries to run something on GC Finalizer thread, the thread is not suspended and throws an exception.
In the fix I removed the Finalizer thread if it's not executing a managed code of the list that is returned when CMD_VM_ALL_THREADS is called.

Fix #13311
mono/mini/debugger-agent.c