Permalink
Commits on Sep 16, 2016
  1. [profiler] Fix a regression that caused all buffers to have a zero th…

    …read ID.
    
    This was introduced in 928b840.
    committed Sep 16, 2016
Commits on Sep 14, 2016
  1. [profiler] Set up callbacks unconditionally.

    This way, all it takes is a simple flag change to turn on/off each profiling
    feature at runtime.
    committed Sep 14, 2016
  2. [profiler] Disable GC move events when allocation events are disabled.

    They serve no purpose when allocation profiling is enabled, and just make log
    files bigger than they have to be.
    committed Sep 13, 2016
  3. [profiler] Clean up and improve the helper thread code.

    * Don't invoke undefined behavior if an fd is >= FD_SETSIZE.
    * Allow multiple command sockets.
    * Close the command socket(s) on shutdown.
    * Properly run cleanup logic on shutdown.
    committed Sep 13, 2016
  4. [profiler] Remove the need to pass a MonoProfiler argument to some fu…

    …nctions.
    
    This is now available on the MonoProfilerThread structure.
    committed Sep 12, 2016
  5. [profiler] Clean up the #include mess in mono-profiler-log.c.

    Half of these aren't even needed - get rid of those. Sort the rest.
    committed Sep 12, 2016
  6. [profiler] Remove mono_threads_attach_tools_thread () declaration.

    We get this from mono-threads.h now.
    committed Sep 12, 2016
  7. [profiler] Always enable the helper thread.

    We need it in all cases now that we use it to periodically flush all buffers.
    The only platforms it was disabled on was NaCl, which we haven't bothered to
    support in a while anyway.
    committed Sep 12, 2016
  8. [profiler] Encapsulate some common logic in the ENTER_LOG/EXIT_LOG ma…

    …cros.
    
    This also has the nice effect of reducing the amount of times we attempt to
    take the reader lock. Now we take it and release it once for a single event.
    committed Sep 12, 2016
  9. [profiler] Fix several race conditions in accessing MonoProfilerThrea…

    …d.buffer.
    
    Only in very few situations is it okay to access this field without first
    taking the reader lock or exclusive lock.
    
    Fixes some crashes observed in the profiler stress tests.
    committed Sep 12, 2016
  10. [profiler] Add an extra assert.

    committed Sep 12, 2016
  11. [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.
    committed Sep 10, 2016
  12. [acceptance-tests] Improve the profiler-stress test runner.

    * Emit an NUnit test report file.
    * Set a timeout of 6 hours per test.
    * Do a thread dump for timed-out tests.
    * Don't print stdout/stderr for passing tests.
    committed Sep 10, 2016