FIX: SELECT with Timestamp Column That Uses FOR XML AUTO May Fail with Stack Overflow or AV

This article was previously published under Q318045
This article has been archived. It is offered "as is" and will no longer be updated.
BUG #: 356642 (SHILOH_BUGS)
A SELECT query that includes a table with a timestamp column that uses the FOR XML AUTO clause may encounter a stack overflow exception or handled access violation (AV).
To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
290211 INF: How To Obtain the Latest SQL Server 2000 Service Pack
NOTE: The following hotfix was created before the release of Microsoft SQL Server 2000 Service Pack 3.

The English version of this fix should have the following file attributes or later:
   Date         Time    Version      Size       File name   ---------------------------------------------------------   12-FEB-2002  23:28   8.00.0578    7,269 KB   Sqlservr.exe				
NOTE:Because of file dependencies, the most recent hotfix or feature that contains the files may also contain additional files.

To avoid this problem, cast the timestamp column to a bigint value. For instance, you can modify the sample code shown in the "More Information" section as follows:
SELECT ColA As 'ColA' , ColB As 'ColB', ColC As 'ColC', Convert(bigint,ColTS) As 'Col Timestamp' FROM TblA WHERE  ColA = 2536  FOR XML AUTO				
Microsoft has confirmed that this is a problem in Microsoft SQL Server 2000.
This problem was first corrected in Microsoft SQL Server 2000 Service Pack 3.
The following code demonstrates the problem:
SELECT ColA As 'ColA' , ColB As 'ColB', ColC As 'ColC', ColTS as 'Col Timestamp' FROM TblA WHERE  ColA = 2536  FOR XML AUTO				
The stack dumper produces the following information for the stack overflow (on build 8.00.534):
2002-02-08 17:51:42.49 spid53    02/08/02 17:51:42 Stack Overflow Dump not possible - Exception c00000fd E at 0x0040AEFD2002-02-08 17:51:42.51 spid53    Address=40aefd Exception Code = c00000fd2002-02-08 17:51:42.52 spid53    eax=912dd604 ebx=2b74d53c ecx=2b6d2234 edx=2b74d53c2002-02-08 17:51:42.54 spid53    esi=2b74d554 edi=2b74c28c eip=0040aefd esp=2b74c22c2002-02-08 17:51:42.56 spid53    ebp=2b74c25c efl=000102822002-02-08 17:51:42.58 spid53    cs=1b ss=23 ds=23 es=23 fs=38 gs=02002-02-08 17:51:42.59 spid53    1: Return Address 0040AEFD2002-02-08 17:51:42.60 spid53    2: Return Address 006AF01A2002-02-08 17:51:42.61 spid53    3: Return Address 006585CB2002-02-08 17:51:42.62 spid53    4: Return Address 006585A52002-02-08 17:51:42.64 spid53    5: Return Address 0065848A2002-02-08 17:51:42.65 spid53    6: Return Address 006580EE2002-02-08 17:51:42.66 spid53    7: Return Address 006569C02002-02-08 17:51:42.67 spid53    8: Return Address 006562BF2002-02-08 17:51:42.69 spid53    9: Return Address 0065B6F62002-02-08 17:51:42.70 spid53    10: Return Address 0041A2A42002-02-08 17:51:42.71 spid53    11: Return Address 004193142002-02-08 17:51:42.72 spid53    12: Return Address 00432F552002-02-08 17:51:42.73 spid53    13: Return Address 0065AA902002-02-08 17:51:42.74 spid53    14: Return Address 0065A9DB2002-02-08 17:51:42.76 spid53    15: Return Address 0040F4032002-02-08 17:51:42.77 spid53    16: Return Address 0040EA952002-02-08 17:51:42.78 spid53    17: Return Address 004101592002-02-08 17:51:42.79 spid53    18: Return Address 0053C4982002-02-08 17:51:42.80 spid53    19: Return Address 004110992002-02-08 17:51:42.81 spid53    20: Return Address 410733792002-02-08 17:51:42.83 spid53    SELECT ColA As 'ColA' , ColB As 'ColB', ColC As 'ColC', ColTS as 'Col Timestamp'  FROM TblA2002-02-08 17:51:42.86 spid53    WHERE   ColA = 2536 2002-02-08 17:51:42.88 spid53    FOR XML AUTO2002-02-08 17:51:42.90 spid53    2002-02-08 17:51:42.91 spid53    TotalPhysicalMemory = 267968512, AvailablePhysicalMemory = 766115842002-02-08 17:51:42.94 spid53    AvailableVirtualMemory = 1806966784, AvailablePagingFile = 4388044802002-02-08 17:51:42.97 spid53    Error: 0, Severity: 19, State: 02002-02-08 17:51:42.97 spid53    language_exec: Process 53 generated an access violation. SQL Server is terminating this process..				
Here is the short stack dump associated with the access violation (on build 8.00.534):
* Short Stack Dump* 00691A53 Module(sqlservr+00291A53) (LWstrToI8+00000036)* 006AB77A Module(sqlservr+002AB77A) (CXVariant::PerformConvertToI8+000002E3)* 006AF01A Module(sqlservr+002AF01A) (CXVariant::ConvertToI8+00000050)* 006585CB Module(sqlservr+002585CB) (CXMLBinExecContext::AddValueTyped+00000024)* 006585A5 Module(sqlservr+002585A5) (CXMLExecContext::AddValue+000000B7)* 0065848A Module(sqlservr+0025848A) (CXMLBinExecContext::AddAttribute+000000F9)* 006580EE Module(sqlservr+002580EE) (CXMLExecContext::AddTagAndAttributes+00000194)* 00656985 Module(sqlservr+00256985) (CXMLExecContext::AddAutoXMLRow+000001E3)* 006562BF Module(sqlservr+002562BF) (CXMLExecContext::AddXMLRow+000003CB)* 0065B6F6 Module(sqlservr+0025B6F6) (CValOdsXMLRow::SetDataX+0000003D)* 0041A2A4 Module(sqlservr+0001A2A4) (SetDataWithPop+0000001C)* 0041CBAC Module(sqlservr+0001CBAC) (CEs::GeneralEval+000000A4)* 00419314 Module(sqlservr+00019314) (CStmtQuery::ErsqExecuteQuery+000003D7)* 00432F55 Module(sqlservr+00032F55) (CStmtSelect::XretExecute+00000229)* 0065AA90 Module(sqlservr+0025AA90) (CStmtXMLSelect::WrapExecute+0000001C)* 0065A9DB Module(sqlservr+0025A9DB) (CStmtXMLSelect::XretExecute+0000005B)* 0040F403 Module(sqlservr+0000F403) (CMsqlExecContext::ExecuteStmts+000002D9)* 0040EA95 Module(sqlservr+0000EA95) (CMsqlExecContext::Execute+000001B6)* 00410159 Module(sqlservr+00010159) (CSQLSource::Execute+00000331)* 0053C498 Module(sqlservr+0013C498) (language_exec+000003E1)* 00411099 Module(sqlservr+00011099) (process_commands+000000EC)* 41073379 Module(UMS+00003379) (ProcessWorkRequests+0000024A)* 41073071 Module(UMS+00003071) (ThreadStartRoutine+000000BD)				

Article ID: 318045 - Last Review: 01/17/2015 05:24:06 - Revision: 4.2

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbhotfixserver kbqfe kbsqlserv2000sp3fix kbbug kbfix kbsqlserv2000presp3fix KB318045