> On Aug 10, 2018, at 11:13 AM, Adrian Prantl via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> [+lldb-dev, since this affects all bots equally]
> 
> Alexander, it looks like there is a race condition in some of the LIT-based 
> lldb-mi tests.
> 
> For example, exec-next.test:
> 
>  # Test lldb-mi -exec-next command.
> 
>  # Check that we have a valid target created via '%lldbmi %t'.
>  # CHECK: ^done
> 
>  -break-insert main
>  # CHECK: ^done,bkpt={number="1"
> 
>  -exec-run
>  # CHECK: ^running
>  # CHECK: *stopped,reason="breakpoint-hit"
> 
>  -exec-next --thread 0
>  # Check that exec-next can process the case of invalid thread ID.
>  # CHECK: ^error,msg="Command 'exec-next'. Thread ID invalid"
> 
>  ...
> 
> Here we are not actually waiting for the breakpoint to be hit. Synchronous 
> mode ensures that the lldb-mi driver waits for each command to be completed, 
> but that only means that -exec-run only returns after the process has been 
> launched and does not include waiting for the program to actually hit a 
> breakpoint. So if the program runs very slowly (such as often happens on a 
> very busy bot), the -exec-next and subsequent commands are scheduled before 
> the breakpoint is hit. In order to fix this we either need to move any tests 
> that schedule commands after hitting breakpoints back to Python, or we need 
> to add a new -wait-for-breakpoint MI command for testing only to force a 
> synchronization point.

In order to test my hypothesis, you could set the breakpoint in a different 
function than main and insert a sleep() into the program to simulate the 
condition on the bots, i.e.:

  void foo() {
    // actual test code below
    ...
  }

  int main(int argc, char ** argv) {
    sleep(10);
    foo();
  }

and in the test:

  # instead of main:
  -break-insert foo
  # and then :-)
  -some-command-that-would-fail-if-executed-before-breakpoint-is-hit

-- adrian
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
  • [lldb-dev] Failing LIT-base... Adrian Prantl via lldb-dev
    • Re: [lldb-dev] Failing... Adrian Prantl via lldb-dev
      • Re: [lldb-dev] Fai... Adrian Prantl via lldb-dev
        • Re: [lldb-dev]... Александр Поляков via lldb-dev
          • Re: [lldb-... Adrian Prantl via lldb-dev
            • Re: [... Александр Поляков via lldb-dev
              • R... Adrian Prantl via lldb-dev
                • ... Александр Поляков via lldb-dev
                • ... Adrian Prantl via lldb-dev
                • ... Александр Поляков via lldb-dev
                • ... Adrian Prantl via lldb-dev
                • ... Александр Поляков via lldb-dev

Reply via email to