PRB: SQL 2000 Server Fails to Start Due to Exception Access Violation After You Configure a High Lock Value (309435)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q309435
BUG #: 355795 (SHILOH_BUGS)

SYMPTOMS

After you increase the SQL Server 2000 locks configuration value to a significantly higher value, SQL Server 2000 fails to start due to a fatal Exception Access Violation (AV). The AV may occur on both SQL Server 2000 RTM and SQL Server 2000 Service Pack 1 (SP1). The SQL Server 2000 error log will have stack information that is similar to:
2001-10-04 15:45:50.87 server    SqlDumpExceptionHandler: Process 2608 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
*******************************************************************************
*
* BEGIN STACK DUMP:
*   10/04/01 15:45:50 spid 0
*
*   Exception Address = 0082EAEC (LockManager::AllocateLockOwnerBlocks + 00000047 Line 0+00000000)
*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
*   Access Violation occurred reading address 00000034
*
*  MODULE                          BASE      END       SIZE
* sqlservr                       00400000  00B0EFFF  0070f000
* ntdll                          77F80000  77FFAFFF  0007b000
* KERNEL32                       77E80000  77F34FFF  000b5000
* ADVAPI32                       77DB0000  77E0AFFF  0005b000
* RPCRT4                         77D40000  77DAFFFF  00070000
* USER32                         77E10000  77E73FFF  00064000
* GDI32                          77F40000  77F7BFFF  0003c000
* OPENDS60                       41060000  41065FFF  00006000
* MSVCRT                         78000000  78045FFF  00046000
* UMS                            41070000  4107CFFF  0000d000
* SQLSORT                        42AE0000  42B6FFFF  00090000
* MSVCIRT                        780A0000  780B1FFF  00012000
* sqlevn70                       41080000  41086FFF  00007000
* dbghelp                        72A00000  72A2CFFF  0002d000
*
*        Edi: 00000000: 
*        Esi: 00A006A0: 19122020  19124020  28F90020  00020000  00000001  00000000  
*        Eax: 00000000: 
*        Ebx: 00000000: 
*        Ecx: 000BA150: 00000000  00000000  00000000  00000000  00030002  00080100  
*        Edx: 00000CEA: 
*        Eip: 0082EAEC: 0C3440F6  C319850F  40F7FFD1  00410130  0C850F00  5FFFD1C3  
*        Ebp: 00C4F694: 00C4F6CC  0054AAE7  0007A120  00000000  000B9478  000B9478  
*      SegCs: 0000001B: 
*     EFlags: 00010212: 004B0044  004C005C  00620069  0000005C  0055004E  0042004D  
*        Esp: 00C4F680: 0007A120  00A006A0  0007A120  1AFE6100  00000000  00C4F6CC  
*      SegSs: 00000023: 
*******************************************************************************
-------------------------------------------------------------------------------
Short Stack Dump
0082EAEC Module(sqlservr+0042EAEC) (LockManager::AllocateLockOwnerBlocks+00000047)
0054AAE7 Module(sqlservr+0014AAE7) (LockManager::Init+0000021E)
00549C0A Module(sqlservr+00149C0A) (StartUp::InitServerComponents+00000858)
00547100 Module(sqlservr+00147100) (sqlservr_main+0000016A)
77DC9571 Module(ADVAPI32+00019571) (CreateProcessWithLogonW+000000C8)
-------------------------------------------------------------------------------
2001-10-04 15:45:52.51 server    SQL Server is aborting. Fatal exception c0000005 caught.
				

WORKAROUND

To work around the problem, start SQL Server 2000 in minimal configuration mode by using Sqlservr.exe with the -c -f option and reconfigure the locks value to dynamic.

For example, use these steps:
  1. At a command prompt, navigate to the path where the SQL Server 2000 instance is installed and use the following:
    • For a SQL Server 2000 Default Instance:

      Navigate to the Binn folder where the SQL Server 2000 default instance is installed and run the following command:

      sqlservr.exe -c -f

    • For a SQL Server 2000 Named Instance:

      Navigate to the Binn folder where the SQL Server named instance is installed and run the following command:

      sqlservr.exe -c -f -s Instance_Name

  2. Connect to SQL Server through Query Analyzer, and then run this code:
    sp_configure 'locks ', 0
    go 
    reconfigure with override
    go
    					
  3. Navigate to the command prompt described in step 1, and then press CTRL+C. To shut down the SQL Server 2000 instance, type:

    y

Modification Type:MajorLast Reviewed:10/3/2003
Keywords:kbprb KB309435