[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