This is an archive of the discontinued LLVM Phabricator instance.

[lit, lldbmi] Skip the new break-insert test on Windows
ClosedPublic

Authored by stella.stamenova on Jun 1 2018, 1:22 PM.

Details

Summary

Skip the new break-insert test on Windows because it hangs and so the test suite never completes. All other lldb-mi tests in the test suite are also skipped on windows

Diff Detail

Repository
rL LLVM

Event Timeline

aprantl accepted this revision.Jun 1 2018, 1:46 PM

Do you have any idea why the test hangs on windows? Is this specific to the lldb-mi implementation or to the test?

lit/tools/lldb-mi/breakpoint/break-insert.test
1 ↗(On Diff #149537)

I didn't know that nowindows was a thing, but it appears to work.

This revision is now accepted and ready to land.Jun 1 2018, 1:46 PM

I think it is specific to the test. I haven't looked into the details of why the other lldb-mi tests don't work on Windows, but I think this test can be made to work on Windows. Currently, it's causing everything to hang though, so I think it should be disabled until it works, so that it doesn't block the test suite.

lit/tools/lldb-mi/breakpoint/break-insert.test
1 ↗(On Diff #149537)

A few of the other tests use it :)

Sure, disabling it now is reasonable.
Since Alexander is going to add lot more lldb-mi tests over the course of his GSOC project, it would be good to figure out why this doesn't work so he can fix the bug and avoid adding more testcases that don't work on Windows.

I am going to check in the change to disable the test but I looked a little bit more into the issue. It looks like the breakpoint never gets hit so this condition is never satisfied:

CHECK: *stopped,reason="breakpoint-hit"

The run instead ends with: "*stopped,reason="exited-normally". I am not sure why this makes lldb-mi and FileCheck (both) never exit. I would expect them both to quit - perhaps this is because lldb-mi is still running and waiting for commands?

If Alexander is going to be adding more tests, it may be worth setting up a Windows machine to run any new tests or at least fixing this test before proceeding.

This revision was automatically updated to reflect the committed changes.

I'm not sure if he has access to a Windows machine and it might be a bit much to ask from a GSOC student to get one. In the mean time, could you perhaps paste the entire output of the test failing from a windows machine?
Maybe we're lucky and can figure out what's wrong just from the log. It's at least worth a try!

thanks!

There are a couple of things to address:

  1. The fact that the test won't exit because lldb-mi won't exit. This happens especially when there's an issue when the test executes. For example, if I run just the lldb-mi test from the test (when the executable doesn't exist), it fails but then doesn't quit. This is the same behavior as when the test fails.
c:\agent1\_work\82\b>C:\agent1\_work\82\b\release\bin\lldb-mi.EXE --synchronous < C:\agent1\_work\82\s\llvm\tools\lldb\lit\tools\lldb-mi\breakpoint\break-insert.test
(gdb)
^done
(gdb)
^done
(gdb)
^done
(gdb)
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
^done
(gdb)
^error,msg="Command 'file-exec-and-symbols'. Target binary 'C:\agent1\_work\82\b\tools\lldb\lit\tools\lldb-mi\breakpoint\a.out' is invalid. error: unable to find executable for 'C:\agent1\_work\82\b\tools\lldb\lit\tools\lldb-mi\breakpoint\a.out'"
(gdb)
^done
(gdb)
  1. The failure itself. The test expects that the breakpoint that is set will be hit, but it is not and the program exits normally:
c:\agent1\_work\82\b>C:\agent1\_work\82\b\release\bin\lldb-mi.EXE --synchronous < C:\agent1\_work\82\s\llvm\tools\lldb\lit\tools\lldb-mi\breakpoint\break-insert.test
(gdb)
^done
(gdb)
^done
(gdb)
^done
(gdb)
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
^done
(gdb)
^done
(gdb)
=library-loaded,id="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",target-name="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",host-name="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",symbols-loaded="0",loaded_addr="-",size="0"
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
^done
(gdb)
^running
=thread-group-started,id="i1",pid="18472"
(gdb)
=thread-created,id="1",group-id="i1"
=thread-selected,id="1"
(gdb)
=library-loaded,id="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",target-name="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",host-name="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\ntdll.dll",target-name="C:\\Windows\\System32\\ntdll.dll",host-name="C:\\Windows\\System32\\ntdll.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\ntdll.dll",target-name="C:\\Windows\\System32\\ntdll.dll",host-name="C:\\Windows\\System32\\ntdll.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\kernel32.dll",target-name="C:\\Windows\\System32\\kernel32.dll",host-name="C:\\Windows\\System32\\kernel32.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\kernel32.dll",target-name="C:\\Windows\\System32\\kernel32.dll",host-name="C:\\Windows\\System32\\kernel32.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\KernelBase.dll",target-name="C:\\Windows\\System32\\KernelBase.dll",host-name="C:\\Windows\\System32\\KernelBase.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\KernelBase.dll",target-name="C:\\Windows\\System32\\KernelBase.dll",host-name="C:\\Windows\\System32\\KernelBase.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\apphelp.dll",target-name="C:\\Windows\\System32\\apphelp.dll",host-name="C:\\Windows\\System32\\apphelp.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\apphelp.dll",target-name="C:\\Windows\\System32\\apphelp.dll",host-name="C:\\Windows\\System32\\apphelp.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\kernel.appcore.dll",target-name="C:\\Windows\\System32\\kernel.appcore.dll",host-name="C:\\Windows\\System32\\kernel.appcore.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\kernel.appcore.dll",target-name="C:\\Windows\\System32\\kernel.appcore.dll",host-name="C:\\Windows\\System32\\kernel.appcore.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\msvcrt.dll",target-name="C:\\Windows\\System32\\msvcrt.dll",host-name="C:\\Windows\\System32\\msvcrt.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\msvcrt.dll",target-name="C:\\Windows\\System32\\msvcrt.dll",host-name="C:\\Windows\\System32\\msvcrt.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\rpcrt4.dll",target-name="C:\\Windows\\System32\\rpcrt4.dll",host-name="C:\\Windows\\System32\\rpcrt4.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="C:\\Windows\\System32\\rpcrt4.dll",target-name="C:\\Windows\\System32\\rpcrt4.dll",host-name="C:\\Windows\\System32\\rpcrt4.dll",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
=library-unloaded,id="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",target-name="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe",host-name="C:\\agent1\\_work\\82\\b\\tools\\lldb\\lit\\tools\\lldb-mi\\breakpoint\\a.exe"
(gdb)
=thread-exited,id="1",group-id="i1"
=thread-group-exited,id="i1",exit-code="0"
*stopped,reason="exited-normally"
(gdb)
^done
(gdb)
^done
(gdb)

Thanks, that's very helpful! Alexander, can you take a look at these issues?

^error,msg="Command 'file-exec-and-symbols'. Target binary 'C:\agent1\_work\82\b\tools\lldb\lit\tools\lldb-mi\breakpoint\a.out' is invalid. error: unable to find executable for 'C:\agent1\_work\82\b\tools\lldb\lit\tools\lldb-mi\breakpoint\a.out'"

I wonder if the problem here is something as basic as the executable really being called a.out.exe on Windows.

I have got a few ideas about what may cause such a behavior. I'll check them out as soon as possible.