FIX: Parallel Query That Has Many Bit Columns May Cause Access Violation (266234)



The information in this article applies to:

  • Microsoft SQL Server 7.0

This article was previously published under Q266234
BUG #: 57983 (SQLBUG_70)

SYMPTOMS

If a query that returns many bit columns is run as a parallel query and the row size passed through one of the Parallelism physical operators in the plan exceeds approximately 8 KB in size, a handled access violation may occur.

CAUSE

A Parallelism physical operator is limited to handling a row size greater than approximately 8 KB in size, and normally such plans are excluded from being run as a parallel plan. Due to a bug in the calculation of the row size when handling bit columns, the query is incorrectly allowed to run in parallel but overflows a buffer allocated for transferring the data between threads.

WORKAROUND

To work around the problem:
  • You can avoid the exception error by reducing the number of columns in the select list so that the row size is smaller.

    -or-

  • Disable parallelism either for this specific query by using OPTION (MAXDOP 1) or disable parallelism on the server by setting the max degree of parallelism configuration option to 1.

STATUS

Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 3 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

274799 INF: How to Obtain Service Pack 3 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0

For more information, contact your primary support provider.

MORE INFORMATION

Parallel queries are only considered when the cost of the query exceeds the cost threshold for parallelism configuration value, and the system has fewer active processes than the available processors.

If this exception error occurs, the stack trace is similar to the following:

0x00668568 Module(sqlservr+268568) (CXPacketTyped<165>::SetData+17)
0x00667a66 Module(sqlservr+267a66) (CValExchange<231>::SetDataX+1a)
0x0041238e Module(sqlservr+1238e) (SetDataWithPop+1b)
0x00412271 Module(sqlservr+12271) (CEs::GeneralEval+aa)
0x0066684b Module(sqlservr+26684b) (CQScanXProducer::Open+a6)
0x0066642c Module(sqlservr+26642c) (FnProducerThread+1e2)
0x004e9d2d Module(sqlservr+e9d2d) (subproc_main+f3)
0x41092a47 Module(ums+2a47) (ProcessWorkRequests+ec)
0x4109326b Module(ums+326b) (ThreadStartRoutine+138)
0x7800bee4 Module(MSVCRT+bee4) (beginthread+ce)
0x77f04ee8 Module(KERNEL32+4ee8) (lstrcmpiW+be)

Modification Type:MajorLast Reviewed:3/14/2006
Keywords:kbBug kbfix kbQFE KB266234