[Lldb-commits] [PATCH] D155333: [lldb][LocateModuleCallback] Fix FileSpec compare

Kazuki Sakamoto via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Sat Jul 15 00:56:55 PDT 2023


splhack added a comment.

@jasonmolenda thank you for looking into this!
I was finally able to repro the test failure on arm64 macOS with this diff (the version with `ASSERT_EQ(a_file_spec.GetPath(), b_file_spec.GetPath()`) and this CMake config.

  cmake \
      ../llvm \
      -G Ninja \
      -DCMAKE_BUILD_TYPE=RelWithDebInfo \
      -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
      -DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64 \
      -DLLDB_TEST_USER_ARGS="--build-dir;$(pwd);-t;--env;TERM=vt100" \
      -DLLDB_ENFORCE_STRICT_TEST_REQUIREMENTS=Off \
      -DLLDB_ENABLE_PYTHON=On \
      -DLLVM_ENABLE_ASSERTIONS:BOOL=TRUE \
      -DLLVM_ENABLE_MODULES=On \
      -DLLVM_ENABLE_PROJECTS="clang;lld;lldb;cross-project-tests" \
      -DLLVM_LIT_ARGS="-v --time-tests --shuffle --xunit-xml-output=$(pwd)/results.xml -v -j 8" \
      -DLLVM_VERSION_PATCH=99 \
      -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;compiler-rt" \
      -DPython3_EXECUTABLE=/usr/bin/python3 \
      -DSWIG_EXECUTABLE=/opt/brew/Cellar/swig at 3/3.0.12/bin/swig



  ******************** TEST 'lldb-unit :: Target/./TargetTests/6/11' FAILED ********************
  Script(shard):
  --
  GTEST_OUTPUT=json:/Users/user/Sources/llvm-project/build/tools/lldb/unittests/Target/./TargetTests-lldb-unit-45687-6-11.json GTEST_SHUFFLE=1 GTEST_TOTAL_SHARDS=11 GTEST_SHARD_INDEX=6 GTEST_RANDOM_SEED=20766 /Users/user/Sources/llvm-project/build/tools/lldb/unittests/Target/./TargetTests
  --
  
  Script:
  --
  /Users/user/Sources/llvm-project/build/tools/lldb/unittests/Target/./TargetTests --gtest_filter=LocateModuleCallbackTest.GetOrCreateModuleWithCachedModule
  --
  /Users/user/Sources/llvm-project/lldb/unittests/Target/LocateModuleCallbackTest.cpp:152: Failure
  Expected equality of these values:
    a_file_spec.GetPath()
      Which is: "/Users/user/Sources/llvm-project/build/tools/lldb/unittests/Target/Inputs/AndroidModule.unstripped.so"
    b_file_spec.GetPath()
      Which is: "/var/folders/hv/pgk33lbd2snf__0bd0v30yyc0000gn/T/lit-tmp-qrocj9y_/lldb/45872/LocateModuleCallbackTest-GetOrCreateModuleWithCachedModule/remote-android/.cache/80008338-82A0-51E5-5922-C905D23890DA-BDDEFECC/AndroidModule.so"
  /Users/user/Sources/llvm-project/lldb/unittests/Target/LocateModuleCallbackTest.cpp:280: Failure
  Value of: module_sp->GetSymbolFileFileSpec()
    Actual: true
  Expected: false
  
  /Users/user/Sources/llvm-project/lldb/unittests/Target/LocateModuleCallbackTest.cpp:152
  Expected equality of these values:
    a_file_spec.GetPath()
      Which is: "/Users/user/Sources/llvm-project/build/tools/lldb/unittests/Target/Inputs/AndroidModule.unstripped.so"
    b_file_spec.GetPath()
      Which is: "/var/folders/hv/pgk33lbd2snf__0bd0v30yyc0000gn/T/lit-tmp-qrocj9y_/lldb/45872/LocateModuleCallbackTest-GetOrCreateModuleWithCachedModule/remote-android/.cache/80008338-82A0-51E5-5922-C905D23890DA-BDDEFECC/AndroidModule.so"
  /Users/user/Sources/llvm-project/lldb/unittests/Target/LocateModuleCallbackTest.cpp:280
  Value of: module_sp->GetSymbolFileFileSpec()
    Actual: true
  Expected: false

The root cause is that the module is cached in this specific test, `GetOrCreateModuleWithCachedModule`.
Because `llvm-lit` runs multiple tests in a same process by this CMake config.
Most runtime data is surely initialized by gtest `SetUp` but `ModuleList` global instance lives beyond the test lifespan.
Fixed it by tear down the cached module.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D155333



More information about the lldb-commits mailing list