aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/process/subprocessmanager.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-04-01 14:05:11 +0200
committerGitHub Enterprise <[email protected]>2026-04-01 14:05:11 +0200
commit7c4d98f09e1129ed3f7e188fdc31c305f919b2c5 (patch)
tree98ee6187024e7cc43b539754c7f1f9db47725dd2 /src/zenutil/process/subprocessmanager.cpp
parentconsul env token refresh (#912) (diff)
downloadzen-7c4d98f09e1129ed3f7e188fdc31c305f919b2c5.tar.xz
zen-7c4d98f09e1129ed3f7e188fdc31c305f919b2c5.zip
fix fork() issues on linux and MacOS (#910)
- Improvement: Hub child process spawning on macOS now uses `posix_spawn` in line with Apple recommendations - Bugfix: Hub child process spawning on Linux now uses `vfork` instead of `fork`, preventing ENOMEM failures on systems with strict memory overcommit (`vm.overcommit_memory=2`) - Bugfix: Fixed process group management on POSIX; child processes were not placed into the correct process group, breaking group-wide signal delivery
Diffstat (limited to 'src/zenutil/process/subprocessmanager.cpp')
-rw-r--r--src/zenutil/process/subprocessmanager.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/zenutil/process/subprocessmanager.cpp b/src/zenutil/process/subprocessmanager.cpp
index b053ac6bd..e908dd63a 100644
--- a/src/zenutil/process/subprocessmanager.cpp
+++ b/src/zenutil/process/subprocessmanager.cpp
@@ -903,7 +903,11 @@ ProcessGroup::Impl::Spawn(const std::filesystem::path& Executable,
Options.AssignToJob = &m_JobObject;
}
#else
- if (m_Pgid > 0)
+ if (m_Pgid == 0)
+ {
+ Options.Flags |= CreateProcOptions::Flag_NewProcessGroup;
+ }
+ else
{
Options.ProcessGroupId = m_Pgid;
}