[Lldb-commits] [PATCH] D92164: Make CommandInterpreter's execution context the same as debugger's one.

Pavel Labath via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Dec 17 08:48:23 PST 2020

labath added a comment.

Sorry for not keeping track of this patch -- I'm not very active these days.

Nevertheless, I did notice that this patch introduced some kind of nondeterminism/raciness/flakyness to the "finish" command. Specifically, it causes the command (as used in TestGuiBasicDebug.py) to fail occasionally (~20% of the time). Since this patch landed (in build 3660 <http://lab.llvm.org:8011/#/builders/68/builds/3660>, there has been a constant stream of builds (build 3667 <http://lab.llvm.org:8011/#/builders/68/builds/3667>, build 3674 <http://lab.llvm.org:8011/#/builders/68/builds/3674>, build 3678 <http://lab.llvm.org:8011/#/builders/68/builds/3678>, ...) where this test is failing. The test has been stable up to that point.

The breakage can be also by running the test commands without the gui mode:

  $ bin/lldb lldb-test-build.noindex/commands/gui/basicdebug/TestGuiBasicDebug.test_gui/a.out -o 'br set -f main.c -p "// Break here"' -o r
  (lldb) target create "lldb-test-build.noindex/commands/gui/basicdebug/TestGuiBasicDebug.test_gui/a.out"
  Current executable set to '/home/pavelo/ll/build/opt/lldb-test-build.noindex/commands/gui/basicdebug/TestGuiBasicDebug.test_gui/a.out' (x86_64).
  (lldb) br set -f main.c -p "// Break here"
  Breakpoint 1: where = a.out`main + 22 at main.c:4:3, address = 0x0000000000401116
  (lldb) r
  Process 32346 stopped
  * thread #1, name = 'a.out', stop reason = breakpoint 1.1
      frame #0: 0x0000000000401116 a.out`main(argc=1, argv=0x00007fffffffdb58) at main.c:4:3
     1   	extern int func();
     3   	int main(int argc, char **argv) {
  -> 4   	  func(); // Break here
     5   	  func(); // Second
     6   	  return 0;
     7   	}
  Process 32346 launched: '/home/pavelo/ll/build/opt/lldb-test-build.noindex/commands/gui/basicdebug/TestGuiBasicDebug.test_gui/a.out' (x86_64)
  (lldb) s
  Process 32346 stopped
  * thread #1, name = 'a.out', stop reason = step in
      frame #0: 0x0000000000401134 a.out`func at func.c:2:3
     1   	int func() {
  -> 2   	  return 1; // In function
     3   	}
  (lldb) fin
  Process 32346 exited with status = 0 (0x00000000) 

I've reverted this patch to get the build green. I think it should be fairly easy to reproduce this problem (the command line approach fails 100% consistently for me), but if you're having trouble reproducing it, let me know, and I can send some logs or something. (The logs seem to indicate that the "step out" thread plan does not dequeue itself after steping out, but I guess the root cause is somewhere else.)

  rG LLVM Github Monorepo



More information about the lldb-commits mailing list