[Lldb-commits] [lldb] [lldb/Host] Enable inheriting "non-inheritable" FDs (PR #126935)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Fri May 2 09:16:03 PDT 2025
DavidSpickett wrote:
I once again attempt to parse your PR description, armed with this understanding.
> Currently we're creating inheritable (~FD_CLOEXEC) file descriptors in the (few) cases where we need to pass an FD to a subprocess. The problem with these is that, in a multithreaded application such as lldb, there's essentially no way to prevent them from being leaked into processes other than the intended one.
Because when you `execve`, all the open file descriptors remain even if you did not intend for all of them to do so. Because they do not have the FD_CLOEXEC flag set.
You would have to track all the file descriptors you have open and arrange to close all the ones you don't want to be open after the `execve`. Or you can treat them in the reverse way...
> A safer (though still not completely safe) approach is to mark the descriptors as FD_CLOEXEC and only clear this flag in the subprocess.
Which means you can clear the flag only for the descriptors that you want to survive the `execve`, leaving the majority to close. Which seems like the logically simpler way around, easier to implement correctly and maintain.
Right?
https://github.com/llvm/llvm-project/pull/126935
More information about the lldb-commits
mailing list