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.
// 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) {