views:

1169

answers:

5

EDIT: See my answer below for the hotfix.

ORIGINAL QUESTION:

In setting up for our boat-programming adventure I have to set up source control and fix project files for a team to use them. (the project was previously only being worked on by one person who took shortcuts with setting up the project includes, etc)

I am fixing those SLN and Proj files. When trying to do a build on an external USB drive (I have not tried it on the primary hard drive) I am getting odd errors (lots of them for various files):

fatal error C1083: Cannot open compiler generated file: '.\Debug\.sbr': Permission denied

These files are referenced in the vcproj file with relative paths in double quotes:

RelativePath="..\..\Source\.cpp"

I get the same errors form within a sln file in the IDE or if I call msbuild with the sln file.

The files are kind of "shared" for a few sln files (projects).

The person who originally created the SLN files is not known for being a wizard at configuring MSDev or making things work for teams.

Is this an issue with the way the source files are referenced? Any suggestions on how to fix these?

This URL does not seem to have helpful information:

Fatal Error C1083 on MSDN

Note - there were/are still hardcoded paths in the proj file, but i don;t see them for these files. They were mostly for the include and lib dirs. I think I removed them all.

I also get these errors:

..\..\Source\.cpp : error C2471: cannot update program database '\debug\vc90.pdb'

..\..\Source\.cpp(336) : fatal error C1903: unable to recover from previous error(s); stopping compilation

..\..\Source\.cpp(336) : error C2418: cannot delete browser file: .\Debug\.sbr

A: 

delete your debug folder and build your project agian.

Syed Tayyab Ali
Ah yes, I have done that many many times. It does not help at all.
Tim
A: 

Occastionally my Visual Studio will suddenly decide something like this. I have found it maybe help to toggle to release, do a full rebuild, then toggle back to debug.

Jack B Nimble
tried it. Doesn't help. I'll wait til I get to a machine that will do a build on the primary drive. I don't know if that has anything to do with it, but we'll see.
Tim
+2  A: 

Hmmm.

Perhaps:

http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/0ceac3c6-62f6-4fdf-82e1-d41e1b4fcd20/

there is a hotfix from MS

http://code.msdn.microsoft.com/KB946040

http://support.microsoft.com/kb/946040

That might be my problem. I think it might only be on one machine I have.

EDIT:

I downloaded and ran the hotfix installer. It seems to have fixed it.

Tim
+1 finally you get your answer..!
Syed Tayyab Ali
+4  A: 

Title: You may receive a "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103" or similar error message when you try to build a solution in Visual C++

Symptoms:

  • D8022 : Cannot open 'RSP00000215921192.rsp'
  • PRJ0008 : Could not delete file 'vc90.idb'.
  • C1083 : Cannot open program database file 'vc90.pdb'
  • C2471 : Cannot update program database 'vc90.pdb'
  • LNK1103 : debugging information corrupt.

Cause:

This problem occurs when all of the following conditions are true:

  1. You have a solution with more than one project in it.
  2. Two or more of the projects are not dependent on each other.
  3. You have parallel builds enabled. (Tools -> Options: Projects and Solutions, Build and Run: "maximum number of parallel project builds" is set to a value greater than 1)
  4. You are building on a system with multiple CPUs (cores).
  5. Two or more of the non-dependent projects are configured to use the same Intermediate and/or Output directory.
  6. A specific race condition in mspdbsrv.exe remains uncorrected.

Resolution:

To resolve the problem do one or more of the following:

  • Reconfigure the non-dependent projects to specify an Intermediate and Output directory that is different from one another, e.g. Output Directory = "$(SolutionDir)$(ProjectName)\$(ConfigurationName)", Intermediate Directory = "$(OutDir)".
  • Adjust your solution's project dependencies (Project -> Project Dependencies...) so that each is dependent on another.
  • Disable parallel builds.
  • Add the "/onecpu" boot option to your boot.ini file.
  • Change you BIOS settings to enable/use only one CPU.
  • File a problem report with Microsoft Technical Support and keep bugging the crap out of them until they eventually fix mspdbsrv.

Status:

The problem is a combination of both a user project configuration error as well as a race condition in Microsoft's "mspdbsrv.exe" utility that does not properly handle more than one thread calling it at the same time for the same file resulting in the file's HANDLE being left open.

Additionally Visual Studio itself and/or its build system (VCBUILD and/or MSBUILD) (or all three!) should be made smart enough to detect and alert the user of such user errors so that corrective action can be taken.

This problem has been around for a LOOOOOONG time.

Applies to:

  • Microsoft Visual C++ 2005
  • Microsoft Visual C++ 2008
  • Others?

Respectfully submitted:

"Fish" (David B. Trout)
[email protected]

p.s:

You're welcome. :)

David B Trout
+1. Great answer. This issue also appears to potentially be in play when using continuous integration systems that are building two unrelated projects in parallel... that's what led me here. :(
oeuftete
David,Thanks for the great answer. I did raise an issue with Microsoft support but we ended up not being able to reproduce it. If it shows up again I will tell MS of this post/content here. The whole point of parallel builds and multi-cores is to build faster - I'd rather not disable any of that... I like your last option. Thanks again
Tim
+1  A: 

I get this same error when I physically remove a file from disk, but leave it in VS. In VS2005 it would give a much better : fatal error file not found. I think this is a bug in VS2008. The hotfix mentioned above didn't help me.

Brian R. Bondy
OK, thanks. I can't get it to happen again. MS support had me try to get information from the build, and since then no reproduction of the issue. Strange, but it builds now.
Tim