Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VC2008 compiler errors opening sbr files (C2418 C1903 C2471)

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

like image 298
Tim Avatar asked May 06 '09 18:05

Tim


4 Answers

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. :)

like image 52
David B Trout Avatar answered Sep 24 '22 21:09

David B Trout


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.

like image 22
Tim Avatar answered Sep 24 '22 21:09

Tim


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.

like image 1
Brian R. Bondy Avatar answered Sep 24 '22 21:09

Brian R. Bondy


In my case it was my virus package (Trend Micro) causing all the problems. I added my Dev folders to the Ignore/White lists to solve the problem

like image 1
Oliver Avatar answered Sep 23 '22 21:09

Oliver