[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();
2
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.)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92164/new/
https://reviews.llvm.org/D92164
More information about the lldb-commits
mailing list