Installing SQL Server 2005 SP3 or SQL Server 2008 on builds prior to XP SP3 Can lead to Bug Check (0xF4, Blue screen, Critical Process Termination)

Due to a bug in Windows XP builds prior to the XP SP2 hot fix or XP SP3 release you may encounter one of the following bugs while attempting to install SQL Server 2008 or SQL Server 2005 SP3 based builds.

The executable files included in SQL Server 2005 SP3 and SQL Server 2008 have been manifested to include Vista and Windows 2008 information.  In rare circumstances the additional information can cause the sxs.dll to cause a heap corruption.  For security reasons a corrupted heap condition can be upgraded to process termination.   In the case of the outlined, Windows bugs, the process is CSRSS.exe and termination of CSRSS.exe is considered critical to the system.   Unexpected termination of CSRSS.exe results in a bug check (0xF4 - CRITICAL PROCESS TERMINATION) condition and a restart of the computer.

Apply the corrections and make sure the WindowsSystem32Sxs.dll version has been updated.

You can see the manifest changes on the executables using the MT.exe SDK tool.   I have provided a sample using SQLCMD below.

SQLCMD – 9.00.4035 (SQL SP3) mt.exe -inputresource:SQLCMD.exe -out:c:tempDebugIt.txt

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity version="1.0.0.0" name="sqlcmd" type="win32"></assemblyIdentity>

<description>Command line to run TSQL scripts. This tool obsoletes osql and isql.</description>

<dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity></dependentAssembly></dependency>

<dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.VC80.ATL" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity></dependentAssembly></dependency>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"><security><requestedPrivileges>

        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>

        </requestedPrivileges></security></trustInfo>

</assembly>

SQLCMD - 9.00.3042 (SQL SP2) build and it does not contain the Vista portions in the manifest.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

  <dependency>

    <dependentAssembly>

      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>

    </dependentAssembly>

  </dependency>

  <dependency>

    <dependentAssembly>

      <assemblyIdentity type="win32" name="Microsoft.VC80.ATL" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>

    </dependentAssembly>

  </dependency>

</assembly>

Bob Dorr
SQL Server Principal Escalation Engineer