llgs: more work on thread stepping.


llgs: more work on thread stepping.

See https://github.com/tfiala/lldb/issues/75. Not fixed yet but
continuing to push this further.


  • Resume() now skips doing deferred notifications if we're doing a vCont;{c,C}. In this case, we're trying to start something up, not defer a stop notification. The default thread action stop mode pickup was triggering a stop because it had at least one stop, which was wrong in the case of a continue. (Bug introduced by previous change.)
  • Added a variant to ThreadStateCoordinator to specify a set of thread ids to be skipped when triggering stop notifications to non-stopped threads on a deferred signal call. For the case of a stepping thread, it is actually told to step (and is running) for a brief moment, but the thread state coordinator would think it needed to send the stepping thread a stop, which id doesn't need to do. This facility allows me to get around that cleanly.

With this change, behavior is now reduced to something I think is
essentially a different bug:

  • Doing a step into libc code from my code crashes llgs.
  • Doing a next out of a function in my own code crashes llgs.


chaorenFeb 2 2015, 5:50 PM
rL227911: llgs: fix up some handling of stepping.