<div dir="ltr">I'm finding that when I set a breakpoint inside a small loop, the breakpoint triggers only the first time.  For example, given this code:<div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="monospace, monospace" size="1">#include <thread></font></div></div><div><div><font face="monospace, monospace" size="1">#include <chrono></font></div></div><div><div><font face="monospace, monospace" size="1"><br></font></div></div><div><div><font face="monospace, monospace" size="1">int main() {</font></div></div><div><div><font face="monospace, monospace" size="1">  for (int i = 0; i < 10; ++i) {</font></div></div><div><div><font face="monospace, monospace" size="1">    std::this_thread::sleep_for(std::chrono::milliseconds(10));</font></div></div><div><div><font face="monospace, monospace" size="1">  }</font></div></div><div><div><font face="monospace, monospace" size="1">  return 0;</font></div></div><div><div><font face="monospace, monospace" size="1">}</font></div></div></blockquote><div><br></div><div>If I set the breakpoint on the sleep_for call, it gets hit the first time.</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="monospace, monospace" size="1">(lldb) target create "a.exe"</font></div></div><div><div><font face="monospace, monospace" size="1">Current executable set to 'a.exe' (i686).</font></div></div><div><div><font face="monospace, monospace" size="1">(lldb) br set -l 6</font></div></div><div><div><font face="monospace, monospace" size="1">Breakpoint 1: where = a.exe`main + 36 at hello.cpp:6, address = 0x00423044</font></div></div><div><div><font face="monospace, monospace" size="1">(lldb) list</font></div></div><div><div><font face="monospace, monospace" size="1">(lldb) process launch</font></div></div><div><div><font face="monospace, monospace" size="1">Process 9892 launching</font></div></div><div><div><font face="monospace, monospace" size="1">Process 9892 launched: 'D:\src\hello\a.exe' (i686)</font></div></div><div><div><font face="monospace, monospace" size="1">(lldb) Process 9892 stopped</font></div></div><div><div><font face="monospace, monospace" size="1">* thread #1: tid = 0x216c, 0x001c3044 a.exe`main + 36 at hello.cpp:6, stop reason = breakpoint 1.1</font></div></div><div><div><font face="monospace, monospace" size="1">    frame #0: 0x001c3044 a.exe`main + 36 at hello.cpp:6</font></div></div><div><div><font face="monospace, monospace" size="1">   3</font></div></div><div><div><font face="monospace, monospace" size="1">   4    int main() {</font></div></div><div><div><font face="monospace, monospace" size="1">   5      for (int i = 0; i < 10; ++i) {</font></div></div><div><div><font face="monospace, monospace" size="1">-> 6        std::this_thread::sleep_for(std::chrono::milliseconds(10));</font></div></div><div><div><font face="monospace, monospace" size="1">   7      }</font></div></div><div><div><font face="monospace, monospace" size="1">   8      return 0;</font></div></div><div><div><font face="monospace, monospace" size="1">   9    }</font></div></div><div><div><font face="monospace, monospace" size="1">frame variable</font></div></div><div><div><font face="monospace, monospace" size="1">(int) i = 0</font></div></div></blockquote><div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="arial, helvetica, sans-serif">So far, so good.  But now, if I try to continue, I'd expect the breakpoint to be hit again, for the i = 1 iteration.  Instead:</font></div><div><font face="monospace, monospace" size="1"><br></font></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="monospace, monospace" size="1">(lldb) continue</font></div></div><div><div><font face="monospace, monospace" size="1">Process 9892 resuming</font></div></div><div><div><font face="monospace, monospace" size="1">(lldb) Process 9892 exited with status = 0 (0x00000000)</font></div></div></blockquote><div><div><br></div></div><div><font face="arial, helvetica, sans-serif">If I turn on various levels of locking, I see that the breakpoint hits, but the ThreadList::ShouldStop test fails, so the process resumes again and again until the loop terminates.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">I've been trying to fix TestCreateAfterAttach.py on Windows, but a very similar issue is blocking.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Is my expectation incorrect?  Is this problem specific to Windows?</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Thanks,</font></div><div><font face="arial, helvetica, sans-serif">Adrian.</font></div><div><font face="monospace, monospace" size="1"><br></font></div></div>