FIX: Extended Stored Procedure "xp_logevent" Generates an Access Violation When Given Too Large a Parameter (290085)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q290085
BUG #: 351920 (SHILOH_BUGS)

SYMPTOMS

Any string that is longer than 8000 bytes that is given as a second parameter to the xp_logevent stored procedure, causes the following error message to occur:
ODBC: Msg 0, Level 19, State 1
SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005
EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
ODBC: Msg 0, Level 20, State 1
Stored function 'xp_logevent' in the library 'xplog70.dll' generated an
access violation. SQL Server is terminating process 51.

RESOLUTION

To resolve this problem, obtain the latest service pack for 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

WORKAROUND

Pass a string that is smaller than 8000 characters to the xp_logevent stored procedure.

STATUS

Microsoft has confirmed that this is a problem in SQL Server 2000. This problem was first corrected in SQL Server 2000 Service Pack 1.

MORE INFORMATION

Steps to Reproduce Behavior

To reproduce the problem, run this code:
USE master
go
EXEC xp_logevent 60000,'arbitrary string longer than 8000 bytes ...' , informational
go
				
A short stack dump similar to the following is observed in the SQL Server error log:
---------------------------------------------------------------------------
Short Stack Dump

0069EF5F Module(sqlservr+0029EF5F) (Fill6xData(unsigned char *,class CXVariant *,class CTypeInfo const *,unsigned long *)+0000009A)
0069BEDE Module(sqlservr+0029BEDE) (intnl_paramdata(struct srv_proc *,int)+000000DB)
0069BF13 Module(sqlservr+0029BF13) (intnl_paramlen(struct srv_proc *,int)+00000014)
006956E9 Module(sqlservr+002956E9) (sql_paramlen(struct srv_proc *,int)+000000A8)
4106127F Module(OPENDS60+0000127F) (_srv_paramlen+00000013)
42EA6201 Module(xplog70+00006201)
0063CF65 Module(sqlservr+0023CF65) (FCallRpcDLL(unsigned short *,int,unsigned short *,int,long *,int *)+00000362)
0061D68E Module(sqlservr+0021D68E) (CXProc::Execute(class CParamExchange *,int)+000001E9)
0061F5CE Module(sqlservr+0021F5CE) (CSQLSource::Execute(class CParamExchange *)+0000038C)
0049CD0A Module(sqlservr+0009CD0A) (CStmtExec::XretLocalExec(class CMsqlExecContext *,unsigned short *,int,class WParseName *)const +00000154)
0049CB9F Module(sqlservr+0009CB9F) (CStmtExec::XretExecute(class CMsqlExecContext *)const +00000322)
004160DB Module(sqlservr+000160DB) (CMsqlExecContext::ExecuteStmts(class ExecutionContext *)+0000027E)
00415765 Module(sqlservr+00015765) (CMsqlExecContext::Execute(class CCompPlan *,class CParamExchange *)+000001C7)
00415410 Module(sqlservr+00015410) (CSQLSource::Execute(class CParamExchange *)+00000343)
00459A54 Module(sqlservr+00059A54) (language_exec(struct srv_proc *)+000003C8)
004175D8 Module(sqlservr+000175D8) (process_commands(struct srv_proc *)+000000E0)
410735D0 Module(UMS+000035D0) (ProcessWorkRequests(class UmsWorkQueue *)+00000264)
4107382C Module(UMS+0000382C) (ThreadStartRoutine(void *)+000000BC)
7800BEA1 Module(MSVCRT+0000BEA1) (_beginthread+000000CE)
77E837CD Module(KERNEL32+000037CD) (TlsSetValue+000000F0)
---------------------------------------------------------------------------
				

Modification Type:MajorLast Reviewed:11/6/2003
Keywords:kbBug kbfix kbSQLServ2000sp1fix KB290085