Skip to content

Commit d00eaa0

Browse files
committed
[lldb] Adjust TestExec code to be closer to real world code
Summary: For some reason the TestExec test on the macOS bots randomly fails with this error: ``` output: * thread rust-lang#2, stop reason = EXC_BAD_ACCESS (code=1, address=0x108e66000) * frame #0: 0x0000000108e66000 [...] File "/Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/lldb/test/API/functionalities/exec/TestExec.py", line 25, in test_hitting_exec self.do_test(False) File "/Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/lldb/test/API/functionalities/exec/TestExec.py", line 113, in do_test "Stopped at breakpoint in exec'ed process.") AssertionError: False is not True : Stopped at breakpoint in exec'ed process. Config=x86_64-/Users/buildslave/jenkins/workspace/lldb-cmake/lldb-build/bin/clang-11 ``` I don't know why the test program is failing and I couldn't reproduce this problem on my own. This patch is a stab in the dark that just tries to make the test code more similar to code which we would expect in a user program to make whatever part of macOS happy that is currently not liking our code. The actual changes are: * We pass in argv[0] that is describing otherprog path instead of the current argv[0]. * We pass in a non-null envp (which anyway doesn't seem to be allowed on macOS man page). Reviewers: labath, JDevlieghere Reviewed By: labath Subscribers: abidh, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D75241
1 parent 6d5a9e8 commit d00eaa0

File tree

1 file changed

+2
-1
lines changed
  • lldb/test/API/functionalities/exec

1 file changed

+2
-1
lines changed

lldb/test/API/functionalities/exec/main.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ int main(int argc, char const **argv) {
1212
std::string directory_name(::dirname(buf));
1313

1414
std::string other_program = directory_name + "/secondprog";
15-
execve(other_program.c_str(), const_cast<char *const *>(argv), nullptr);
15+
argv[0] = other_program.c_str();
16+
execv(argv[0], const_cast<char *const *>(argv));
1617
perror("execve");
1718
abort();
1819
}

0 commit comments

Comments
 (0)