fallkrum added a comment.

In D80112#2080516 <https://reviews.llvm.org/D80112#2080516>, @jingham wrote:

> I was suggesting something like having a Python breakpoint action that 
> increments a Python variable.  Hit the breakpoint first on thread A.  That 
> should increment it by one.  Then suspend thread A and run to hit the 
> breakpoint on thread B.  If your fix is right, then only the thread B action 
> is run, so the python variable will have a value of 2.  But if the suspended 
> thread action also runs, the variable will have the value of 3.  That seems 
> like a pretty easy test to write, and will ensure that the correct behavior 
> is produced.


Can you please explain in more details what breakpoint actions you keep in 
mind? My investigations have led to the conclusion that all breakpoint actions 
(including callbacks) are executed inside StopInfoBreakpoint::PerformAction and 
only once per StopInfoBreakpoint breakpoint instance. I.e if we saved that 
StopInfoBreakpoint instance for whatever reason and it wrongly become the 
reason of stop (as in our case when thread was suspended)  the second time we 
call it's StopInfoBreakpoint::PerformAction it simply returns not performing 
any actions. Please take a look at it's implementation:

  void PerformAction(Event *event_ptr) override {
      if (!m_should_perform_action)
        return;
      m_should_perform_action = false;
        .
        .
        .


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80112/new/

https://reviews.llvm.org/D80112



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to