[sgen] Always report object moves on the GC thread.
commit4acc3dfeedb4087a99179cd64b59419c931a6c3f
authorAlex Rønne Petersen <alexrp@xamarin.com>
Sat, 10 Sep 2016 21:09:48 +0000 (10 23:09 +0200)
committerAlex Rønne Petersen <alexrp@xamarin.com>
Sun, 2 Oct 2016 16:44:41 +0000 (2 18:44 +0200)
tree71fac8a71dbd301d9dfa56164a1b3d9b55f33320
parentbb1813cca6e36a20d33750a535bd03de8f254716
[sgen] Always report object moves on the GC thread.

This avoids exposing the SGen worker threads through the profiler APIs. Doing
so had two main problems:

* It's easy for a user of the profiler API to accidentally mess with the state
  of the worker thread in all sorts of ways, which could break the GC.
* It's been a long-standing guarantee that any profiler API callback will be
  invoked on a thread that is, at the very least, attached to the runtime via
  the mono-threads infrastructure. This is not the case for SGen workers.

This fixes a deadlock in the log profiler when using major=marksweep-conc.
mono/metadata/sgen-client-mono.h
mono/metadata/sgen-mono.c