SQL Server 2005 Setup Fails in WOW (x86) On Computer With More Than 32 CPUs

 

SCENARIO

SQL Server fails to install a WOW64 instance (x86) an on a computer with more than 32 CPUs. During setup you will encounter a SQL Server failed to start message.

 

SQL Server is attempting to determine the NUMA configuration during startup. WOW instances are x86 and limited to 32 CPUs but the x64 installation can have more than 32 CPUs.

 

SQL Server encounters an exception which is logged in the \LOG\exception.log file as the following.

 

spid 0 Exception 0xc0000005 EXCEPTION_ACCESS_VIOLATION reading address 00000000 at 0x010E09C8

 

The LOG\Errorlog shows the exception encountered as well.

 

2008-09-04 17:59:10.23 Server Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)

       Oct 14 2005 00:33:37

       Copyright (c) 1988-2005 Microsoft Corporation

       Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

 

2008-09-04 17:59:10.23 Server (c) 2005 Microsoft Corporation.

2008-09-04 17:59:10.23 Server All rights reserved.

2008-09-04 17:59:10.23 Server Server process ID is 4104.

2008-09-04 17:59:10.24 Server Logging SQL Server messages in file 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG'.

2008-09-04 17:59:10.24 Server Registry startup parameters:

2008-09-04 17:59:10.24 Server -d C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf

2008-09-04 17:59:10.24 Server -e C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG

2008-09-04 17:59:10.24 Server -l C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf

2008-09-04 17:59:10.24 Server Command Line Startup Parameters:

2008-09-04 17:59:10.24 Server -m SqlSetup

2008-09-04 17:59:10.24 Server SqlSetup

2008-09-04 17:59:10.24 Server -Q

2008-09-04 17:59:10.24 Server -q SQL_Latin1_General_CP1_CI_AS

2008-09-04 17:59:10.24 Server -T 4022

2008-09-04 17:59:10.24 Server -T 3659

2008-09-04 17:59:10.24 Server -T 3610

2008-09-04 17:59:10.24 Server -T 4010

2008-09-04 17:59:10.26 Server SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.

2008-09-04 17:59:10.26 Server Detected 32 CPUs. This is an informational message; no user action is required.

2008-09-04 17:59:10.59 Server Set AWE Enabled to 1 in the configuration parameters to allow use of more memory.

2008-09-04 17:59:11.21 Server Using 'dbghelp.dll' version '4.0.5'

2008-09-04 17:59:11.24 Server ***Stack Dump being sent to C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump0001.txt

2008-09-04 17:59:11.24 Server SqlDumpExceptionHandler: Process 2808 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.

 

WORKAROUND

1. Run setup as normal until the following dialog is encountered while setup is attempting to configure/start the SQL Server service.

Retry

 

2. While the dialog remains active add trace flag -T8015 to the registry as a startup parameter for SQL Server.

This trace flag disables NUMA detection and allows the SQL Server to start.

 

Registry Path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Microsoft SQL Server\≪INSTANCE ID≫\MSSqlServer\Parameters

 

Add a new SQLArg## string value of -T8015.

reg

 

3. Close the registry editor and press the Retry button to complete setup.

Do not remove trace flag -T8015 until you have a build of SQL Server that corrects the startup problem.

 

STATUS: The SQL Server development team is studying the problem and a fix is likely to occur in an upcoming Cumulative Update for SQL Server 2005.

Bob Dorr
SQL Server Principal Escalation Engineer