FIX: Crash in SQLXMLX Hangs Web Service Threads (291838)



The information in this article applies to:

  • Microsoft Data Access Components 2.6
  • Microsoft SQL Server 2000 Standard Edition

This article was previously published under Q291838

SYMPTOMS

When Command.Execute( , , adExecuteStream) is used to execute a statement with the Command.CommandStream object, and when the input stream is a SQL query that uses the XML template format and contains a large value for a <sql:param> parameter, an access violation (AV) may occur.

This occurs only with the MDAC 2.6 (2000.80.194.0) version of Sqlxmlx.dll.

CAUSE

While the statement is being copied into the stream buffer prior to sending it to the server, a function that processes parameter values attempts to copy twice as many bytes as necessary. When the parameter data resides close to the end of allocated memory, this can cause the copy request to run off the end of allocated memory, and an AV occurs.

RESOLUTION

To resolve this problem, obtain the latest service pack for Microsoft Data Access Components 2.6.

For customers who are unable to upgrade to the latest service pack, a supported fix is available from Microsoft, but it is only intended to correct the problem described in this article and should be applied only to systems experiencing this specific problem.

To obtain the fix, contact Microsoft Product Support Services. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, please go to the following address on the World Wide Web: NOTE: In special cases, charges that are normally incurred for support calls may be canceled, if a Microsoft Support Professional determines that a specific update will resolve your problem. Normal support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The English version of this fix should have the following file attributes or later:
   Date           Version          Size             File name    
   -------------------------------------------------------------
   06-MAR-2001    2000.80.264.0    188,492 bytes    Sqlxmlx.dll
   06-MAR-2001    2000.80.264.0     24,576 bytes    Sqlxmlx.rll  
				

WORKAROUND

If possible, keep the size of the parameters relatively small. Parameters no larger than approximately 50 characters are recommended.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was first corrected in Microsoft Data Access Components 2.6 Service Pack 1.

MORE INFORMATION

The crash in Sqlxmlx.dll is a handled exception, so it may not be immediately obvious that this crash is occurring. It may be necessary to attach a debugger to the process to detect the crash.

However, this crash can lead to another condition which causes the executing thread in a Web server to go into an infinite loop. As more threads encounter this condition over time, server performance can be severely degraded.

Modification Type:MinorLast Reviewed:9/26/2005
Keywords:kbHotfixServer kbQFE kbprb kbQFE KB291838