Fix TestProcesslaunch regression caused by D7372
authorPavel Labath <labath@google.com>
Fri, 6 Feb 2015 11:32:52 +0000 (11:32 +0000)
committerPavel Labath <labath@google.com>
Fri, 6 Feb 2015 11:32:52 +0000 (11:32 +0000)
commit3a2da9eb0deb330d7cd85bfc40f3761875e68b4e
treebf159f741e8aae5f8a396e54f8e38f5f9f52b379
parent77f62d45ef61fb923636ceb3ecee42e490a56e1c
Fix TestProcesslaunch regression caused by D7372

Summary:
After closing all the leaked file descriptors to the inferior tty, the following problem occured:
- when stdin, stdout and stderr are redirected, there are no slave descriptors open (which is good)
- lldb has a reader thread, which attempts to read from the master end of the tty
- this thread receives an EOF
- in response, it closes it's master end
- as this is the last open file descriptor for the master end, this deletes the tty and sends
  SIGHUP to the inferior (this is bad)

I fix this problem by making sure the master end remains open for the duration of the inferior
process by storing a copy of the file descriptor in ProcessMonitor. I create a copy to avoid
ownership issues with the reading thread.

Reviewers: ovyalov, emaste

Subscribers: lldb-commits

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

llvm-svn: 228391
lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
lldb/source/Plugins/Process/Linux/ProcessMonitor.h
lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp