From 02d8748a816c8913a5b973b4b0661f5ee6124ded Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Mon, 5 Feb 2024 19:51:49 +0100 Subject: [PATCH] fix: Fix MSVC crash when using /Zi /Fddebug.pdb With /Zi, MSVC starts a long-lived mspdbsrv.exe background process. The implementation of #1274 kills all processes created by ccache including mspdbsrv.exe, which can make cl.exe crash with this error message: fatal error C1090: PDB API call failed, error code '23': (0x000006BA) Fix this by setting JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK to only kill the compiler and not processes that the compiler creates. Fixes #1386 in a better way. --- src/execute.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/execute.cpp b/src/execute.cpp index 0c51671bf..0f64f0a46 100644 --- a/src/execute.cpp +++ b/src/execute.cpp @@ -174,7 +174,8 @@ win32execute(const char* path, // process is killed. JOBOBJECT_EXTENDED_LIMIT_INFORMATION jobInfo = {}; jobInfo.BasicLimitInformation.LimitFlags = - JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE + | JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK; BOOL job_success = SetInformationJobObject( job, JobObjectExtendedLimitInformation, &jobInfo, sizeof(jobInfo)); if (!job_success) { -- 2.47.2