diff options
| author | Dan Engelbrecht <[email protected]> | 2026-04-01 14:05:11 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-04-01 14:05:11 +0200 |
| commit | 7c4d98f09e1129ed3f7e188fdc31c305f919b2c5 (patch) | |
| tree | 98ee6187024e7cc43b539754c7f1f9db47725dd2 /src/zenutil/process/subprocessmanager.cpp | |
| parent | consul env token refresh (#912) (diff) | |
| download | zen-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.cpp | 6 |
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; } |