Open bc-lee opened 2 months ago
The question is: why does this issue occur only on Fedora? Further investigation is needed.
This seems suspicious:
(lldb) p k
error: Error while searching for SDK: HostInfoError
error: <EXPR>:2:1: cannot find 'k' in scope/path/to/swift/build-full/usr/lib/swift/linux/_StringPro...
k
Both ci.swift.org's Fedora 39 and my Fedora 40 systems are experiencing the same issue with lldb's
TestSwiftConsumeOperatorAsync.py
. The test fails with the following error message:Details
``` FAIL: test_swift_consume_operator_async_dwarf (TestSwiftConsumeOperatorAsync.TestSwiftConsumeOperatorAsyncType) Check that we properly show variables at various points of the CFG while ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/build-user/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 1692, in test_method return attrvalue(self) ^^^^^^^^^^^^^^^ File "/home/build-user/llvm-project/lldb/packages/Python/lldbsuite/test/decorators.py", line 169, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/build-user/llvm-project/lldb/test/API/lang/swift/variables/consume_operator_async/TestSwiftConsumeOperatorAsync.py", line 45, in test_swift_consume_operator_async self.do_check_copyable_value_test() File "/home/build-user/llvm-project/lldb/test/API/lang/swift/variables/consume_operator_async/TestSwiftConsumeOperatorAsync.py", line 75, in do_check_copyable_value_test self.assertGreater(varK.unsigned, 0, "varK not initialized?!") AssertionError: 0 not greater than 0 : varK not initialized?! Config=x86_64-/home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/clang ```Relevant CI job: https://ci.swift.org/job/oss-swift-package-fedora-39/165
I manually built the test code and ran it with lldb. The results seem different from what is expected in
llvm-project/lldb/test/API/lang/swift/variables/consume_operator_async/TestSwiftConsumeOperatorAsync.py
.Details
``` $ /path/to/build/usr/bin/lldb ./a.out (lldb) target create "./a.out" Current executable set to '/path/to//swift/a.out' (x86_64). (lldb) b main.swift:24 Breakpoint 1: where = a.out`copyableValueTest() + 48 at main.swift:24:11, address = 0x0000000000001530 (lldb) b main.swift:27 Breakpoint 2: 3 locations. (lldb) b main.swift:28 Breakpoint 3: where = a.out`copyableValueTest() + 63 at main.swift:28:11, address = 0x00000000000016ef (lldb) b main.swift:30 Breakpoint 4: where = a.out`copyableValueTest() + 217 at main.swift:30:7, address = 0x0000000000001789 (lldb) b main.swift:32 Breakpoint 5: where = a.out`copyableValueTest() + 46 at main.swift:32:7, address = 0x000000000000185e (lldb) c error: Command requires a current process. (lldb) r Process 2644725 launched: '/path/to//swift/a.out' (x86_64) warning: (x86_64) /lib64/libstdc++.so.6 No LZMA support found for reading .gnu_debugdata section warning: (x86_64) /lib64/libm.so.6 No LZMA support found for reading .gnu_debugdata section warning: (x86_64) /lib64/libgcc_s.so.1 No LZMA support found for reading .gnu_debugdata section Process 2644725 stopped * thread #2, name = 'a.out', stop reason = breakpoint 1.1 frame #0: 0x0000555555555530 a.out`copyableValueTest() at main.swift:24:11 21 ////////////////// 22 23 public func copyableValueTest() async { -> 24 print("stop here") // Set breakpoint 00 25 let k = Klass() 26 k.doSomething() 27 await forceSplit() // Set breakpoint 01 Target 0: (a.out) stopped. (lldb) p k error: Error while searching for SDK: HostInfoError error:Even when running lldb, I don't see how
varK
is initialized on line 24. Additionally, line 27 (await forceSplit()
) creates three breakpoints, whereas the test code expects only two breakpoints.The question is: why does this issue occur only on Fedora? Further investigation is needed.