Fix TestFdLeak on Linux.

Summary:
LLGS leaks pipes (when launched by lldb), sockets (when launched by platform),
and/or log file to the inferior. This should prevent all possible leaks.

Reviewers: vharron, clayborg

Reviewed By: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9211

llvm-svn: 235615
This commit is contained in:
Chaoren Lin 2015-04-23 18:28:04 +00:00
parent b8b2ed6529
commit 9cf4f2c2d8
1 changed files with 6 additions and 0 deletions

View File

@ -1796,6 +1796,12 @@ NativeProcessLinux::Launch(LaunchArgs *args, Error &error)
if (!DupDescriptor(args->m_stderr_path.c_str (), STDERR_FILENO, O_WRONLY | O_CREAT | O_TRUNC))
exit(eDupStderrFailed);
// Close everything besides stdin, stdout, and stderr that has no file
// action to avoid leaking
for (int fd = 3; fd < sysconf(_SC_OPEN_MAX); ++fd)
if (!args->m_launch_info.GetFileActionForFD(fd))
close(fd);
// Change working directory
if (working_dir != NULL && working_dir[0])
if (0 != ::chdir(working_dir))