I run into errors when using a customized build system which uses Visual
Studio's devenv.exe under the hood to compile VisualStudio 2005 projects (with
VC++ compiler). When starting two parallel builds with Jenkins (on different
code base) the second job will always fail with “Fatal error C1090: PDB API
call failed, error code '23' : '(” in exactly the same second the first job
finishes processing. Running both jobs outside Jenkins does not produce the
This has also been reported for builds executed by MSBuild on the Jenkins user
mailing list .
I analysed this issue thoroughly and can track the problem down to the usage
of mspdbsrv.exe. This program is automatically spawned when building a
VisualStudio project. All Visual Studio instances normally share one common
pdb-server which shutdown itself after a idle period (standard is 10 minutes).
“It ensures access to .pdb files is properly serialized in parallel builds
when multiple instances of the compiler try to access the same .pdb file” .
I assume that Jenkins does a clean up of its build environment when a
automatically started job finishes (like as described at <http://wiki.jenkins-
ci.org/display/JENKINS/Aborting+a+build>). I checked mspbsrv.exe with
ProcessExplorer and the process indeed has a variable
JENKINS_COOKIE/HUDSON_COOKIE set in its environment if started through
Jenkins. Killing mspdbsrv.exe while projects are still connected will break
Jenkins mustn't kill mspdbsrv.exe to be able to build more than one Visual
Studio project at the same time.