[ 
https://issues.jenkins-ci.org/browse/JENKINS-9104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=161729#comment-161729
 ] 

Neil Bird commented on JENKINS-9104:
------------------------------------

Visual Studio is so ubiquitous that I personally think this could warrant a 
special case built into Jenkins, but anyway this is what we have just started 
doing (before calling devenv but after the MSC setup.bat has been called) to 
work around this (for all Windows builds):

{quote}
:: PITA to keep MSPDBSRV alive
set ORIG_BUILD_ID=%BUILD_ID%
set BUILD_ID=DoNotKillMe
start mspdbsrv -start -spawn
set BUILD_ID=%ORIG_BUILD_ID%
set ORIG_BUILD_ID=
{quote}

It seems, from reading around, that the Jenkins process “tree” killer rummages 
through the *whole* process tree looking for processes with the environment 
variable BUILD_ID set to what Jenkins originally set it to, and killing any it 
finds.  The above temporarily changes that to something else (anything, you 
could even just blank it), launches mspdbsrv manually (so it has the altered 
env. var.) and then puts it back (to restore the usual no-resource-leak fix).

When you run mspdbsrv, it seems to immediately exit if there's already an 
appropriate version running, so it doesn't matter having multiple jobs trying 
to kick it off.
                
> Visual studio builds started by Jenkins fail with "Fatal error C1090" because 
> mspdbsrv.exe gets killed
> ------------------------------------------------------------------------------------------------------
>
>                 Key: JENKINS-9104
>                 URL: https://issues.jenkins-ci.org/browse/JENKINS-9104
>             Project: Jenkins
>          Issue Type: Bug
>          Components: core
>    Affects Versions: current
>         Environment: Windows XP, using MSBuild or devenv.exe to build MS 
> Visual Studio Projects
>            Reporter: Christoph Vogtländer
>            Priority: Minor
>
> 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 error.
> This has also been reported for builds executed by MSBuild on the Jenkins 
> user mailing list [1].
> 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" [2].
> 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 
> compilation. 
> Jenkins mustn't kill mspdbsrv.exe to be able to build more than one Visual 
> Studio project at the same time.
> --
> [1] 
> http://jenkins.361315.n4.nabble.com/MSBuild-fatal-errors-when-build-triggered-by-timer-td385181.html
> [2] 
> http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/b1d1bceb-06b6-47ef-a0ea-23ea752e0c4f/

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to