FIX: IRL can cause 3307, OS error 6, unhandled server level AV

ID: Q153855


The information in this article applies to:


SYMPTOMS

If a table is set to enable Insert - Row Locking (IRL) with "sp_tableoption 'table_name', 'Insert row lock', true" within a transaction and the user fails to end the transaction with 'commit tran' or 'rollback tran' before exiting, it could cause 3307 "Process %ld was expected to hold logical lock on page %ld.", OS error 6, 602 "Could not find row in Sysindexes for dbid '%d', object '%Id',index '%d'." and an unhandled server level access violation (AV).


MORE INFORMATION

On a single processor computer, when the user exits without 'commit tran', it can cause the following error in the errorlog:

Error : 3307, Severity: 21, State: 1
Process 10 was expected to hold logical lock on page 336.
WARNING: Process being freed while holding Dataserver semaphore
udread: Operating system error 6(The handle is invalid.) on device
'C:\MSSQL\DATA\MASTER.DAT' (virtpage 0x000009a4).
udread: Operating system error 6(The handle is invalid.) on device
'C:\MSSQL\DATA\MASTER.DAT' (virtpage 0x00000394).
udread: Operating system error 6(The handle is invalid.) on device
'C:\MSSQL\DATA\MASTER.DAT' (virtpage 0x00000383).
Buffer 8d3b20 from database 'master' has page number 0 in the page header
and page number 895 in the buffer header
Recursive error 822 in ex_print
mirrorproc: i/o error on primary device 'C:\MSSQL\DATA\MASTER.DAT'

SQL Server will terminate itself afterwards. When SQL Server is restarted and DBCC CHECKDB("pubs") is executed, the results sometimes report error 602: Could not find row in Sysindexes for dbid '%d', object '%Id',index '%d'.

After a user exits on a multi-processor computer, sp_who shows the spid is still valid and the status shows 'spinloop', which does not allow you to kill the spid. DBCC CHECKDB or other queries will either hang, or become extremely slow. There will also be many bufwait() errors in the errorlog. Stopping SQL Server would either cause an AV or cause SQl Server to stop responding.


STATUS

Microsoft has confirmed this to be a problem in Microsoft SQL Server version 6.5. This problem has been corrected in U.S. Service Pack 1 for Microsoft SQL Server version 6.5. For more information, contact your primary support provider.


Keywords          : kbbug6.50 
Version           : 6.5
Platform          : WINDOWS 
Issue type        : 

Last Reviewed: March 30, 1999