[compiler-rt] [sanitizer_common] [Darwin] Replace pty with pipe on posix_spawn path for spawning symbolizer (PR #170809)
Mariusz Borsa via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 9 03:04:05 PST 2025
================
@@ -281,53 +281,43 @@ int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp,
(size_t)newlen);
}
-static fd_t internal_spawn_impl(const char *argv[], const char *envp[],
- pid_t *pid) {
- fd_t primary_fd = kInvalidFd;
- fd_t secondary_fd = kInvalidFd;
-
+bool internal_spawn(const char* argv[], const char* envp[], pid_t* pid,
+ fd_t fd_stdin, fd_t fd_stdout) {
+ // NOTE: Caller ensures that fd_stdin and fd_stdout are not 0, 1, or 2, since
+ // this can break communication.
+ //
+ // NOTE: Caller is responsible for closing fd_stdin after the process has
+ // died.
+
+ int res;
auto fd_closer = at_scope_exit([&] {
- internal_close(primary_fd);
- internal_close(secondary_fd);
+ // NOTE: We intentionally do not close fd_stdin since this can
+ // cause us to receive a fatal SIGPIPE if the process dies.
+ internal_close(fd_stdout);
});
- // We need a new pseudoterminal to avoid buffering problems. The 'atos' tool
----------------
wrotki wrote:
Ah OK, it was fixed in atos, 5yrs ago. However you should say that explicitly in your PR synopsis, not everyone in open source community can have this context.
https://github.com/llvm/llvm-project/pull/170809
More information about the llvm-commits
mailing list