labath added a comment.

After this patch, python_api/run_locker/TestRunLocker.py becomes flaky. 
https://lab.llvm.org/buildbot/#/builders/68/builds/58456 is the first such 
failure, but there have been about a dozen failures since then. The backtraces 
on the buildbot page are fairly useless, but I was able to capture this 
backtrace locally:

  include/c++/v1/vector:1537: assertion __n < size() failed: vector[] index out 
of bounds
  Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH 
or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
  0  0x000055dd180146be llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 46
  1  0x000055dd18014d6c
  2  0x00007fea9b3ce1c0
  3  0x00007fea9b236347 raise + 167
  4  0x00007fea9b237797 abort + 247
  5  0x000055dd18862597
  6  0x000055dd124c4563 
lldb_private::process_gdb_remote::ProcessGDBRemote::SetThreadPc(std::__u::shared_ptr<lldb_private::Thread>
 const&, unsigned long) + 275
  7  0x000055dd124c42fc 
lldb_private::process_gdb_remote::ProcessGDBRemote::DoUpdateThreadList(lldb_private::ThreadList&,
 lldb_private::ThreadList&) + 748
  8  0x000055dd129c8687 lldb_private::Process::UpdateThreadListIfNeeded() + 247
  9  0x000055dd12a39797 lldb_private::ThreadList::FindThreadByID(unsigned long, 
bool) + 55
  10 0x000055dd12a396db lldb_private::ThreadList::GetSelectedThread() + 43
  11 0x000055dd129a8dea 
lldb_private::ExecutionContext::ExecutionContext(lldb_private::Target*, bool) + 
234
  12 0x00007fea99840bf9 lldb::SBTarget::EvaluateExpression(char const*, 
lldb::SBExpressionOptions const&) + 281
  13 0x00007fea99840a7b lldb::SBTarget::EvaluateExpression(char const*) + 187
  14 0x00007fea9995eb77
  15 0x000055dd185907cd
  16 0x000055dd18545814 _PyObject_Call + 292
  17 0x000055dd1865fecb _PyEval_EvalFrameDefault + 11515
  18 0x000055dd1865cfa8 _PyEval_Vector + 184
  19 0x000055dd186666c3
  20 0x000055dd18666906
  21 0x000055dd1865e56f _PyEval_EvalFrameDefault + 5023
  22 0x000055dd1865cfa8 _PyEval_Vector + 184
  23 0x000055dd186666c3
  24 0x000055dd18666906
  25 0x000055dd1865e56f _PyEval_EvalFrameDefault + 5023
  26 0x000055dd1865cfa8 _PyEval_Vector + 184
  27 0x000055dd1865fecb _PyEval_EvalFrameDefault + 11515
  28 0x000055dd1865cfa8 _PyEval_Vector + 184
  <a lot of additional python frames>

Given that the failure is in the `DoUpdateThreadList` function, I'm guessing 
that this patch removed/reduced some existing synchronization which prevented 
this code from executing concurrently with something else (I don't know what), 
although it's possible that the right fix (since updating the thread list while 
the process is running doesn't make sense) is to bail out of 
`EvaluateExpression` sooner (@jingham ?).

If you want to reproduce this, note that the bug reproduces relatively 
infrequently (~1% for me, though it seems to be a bit higher on the buildbot), 
so you may need to run it many times before you can catch it in action. The 
failing part is not always the same (e.g. sometimes it just hangs), but I 
expect the root cause to be the same. I've also confirmed that the failure rate 
of the test goes down to zero after reverting this patch.

Can you investigate (and possibly revert this patch in the mean time)?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D158034

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

Reply via email to