FIX: Intense Database Backup Stress Causes BackupSync to Generate an Assertion when Releasing Memory

Article translations Article translations
Article ID: 300380 - View products that this article applies to.
This article was previously published under Q300380
BUG #: 235056 (SHILOH_BUGS)
Expand all | Collapse all

SYMPTOMS

During a backup operation, under a rare stress condition, SQL Server may experience an assertion. In some cases, the SQL Server service shuts down.

CAUSE

This type of assertion occurs because memory is being released incorrectly. NoteWriteComplete is attempting to free the BackupSync object, but SQL Server is not allowed to free thread-safe memory in this context.

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
NOTE: The BackupSync object now has it's own memory object.

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

When you encounter this problem, you may see the following error messages listed in the SQL Server error log:

utassert_fail(UTASSERT_TYPE UTASSERT_RETAIL, const char * 0x41079778 `string', const char * 0x4107971c szAssertFilename, int 0x00000233, const char * 0x00000000) line 263
UmsScheduler::CheckForIoCompletion(int 0x00000000) line 563 + 41 bytes
UmsScheduler::Suspend(unsigned long 0xffffffff, int 0x00000001) line 1025
UmsEvent::Wait(unsigned long 0xffffffff, int 0x00000001, int 0x00000000) line 316 + 21 bytes
ExecutionContext::WaitForSignal(ExecutionContext * const, unsigned long 0xffffffff, unsigned int 0x00a661b4, ExecutionContext::WAIT_IO_SERVICE DONT_SERVICE_IO, ExecutionContext::RETURN_IO_COMPLETE DONT_RETURN_IO_COMPLETION) line 1053 + 43 bytes
upwait0(void * 0x42b70240, void (void *)* 0x00427854 ClearSpinlock(void *), void * 0x00a66498, unsigned long 0xffffffff, long * 0x00000000, long 0x00000000, unsigned int 0x00000207, int 0x3c4cb47c) line 461 + 21 bytes
CMemThread::TsGetAccess(CMemThread * const, EThreadState x_tsPageWait) line 152
CMemThread::Free(CMemThread * const 0x42b70240, void * 0x48982edc) line 341
commondelete(void * 0x48982edc) line 108
BackupSync::~BackupSync(BackupSync * const) line 185 + 18 bytes
BackupSync::Release(BackupSync * const) line 784 + 11 bytes
BackupSync::NoteWriteCompleted(DBTABLE * 0x489826dc, const PageId & {...}) line 691
CheckpointIoComplete(UmsIoRequest & {...}) line 1399
FCB::IoCompletion(UmsIoRequest & {...}) line 970 + 4 bytes
UmsScheduler::CheckForIoCompletion(int 0x00000001) line 590 + 10 bytes
UmsScheduler::AddOutstandingIo(UmsIoRequest * 0x42e4435c) line 136
UmsScheduler::WriteAsync(UmsIoRequest & {...}) line 389
UmsWriteAsync(void * 0x0000029c, unsigned __int64 0x000000003ef18000, void * 0x5ac10000, unsigned long 0x00002000, UmsIoRequest & {...}, void (UmsIoRequest &)* 0x0040d601 FCB::IoCompletion(UmsIoRequest &), void * 0x319c1400) line 1055 + 18 bytes
FCB::AsyncWrite(FCB * const, const void * 0x5ac10000, unsigned int 0x00002000, unsigned __int64 0x000000003ef18000, void (UmsIoRequest &)* 0x0046b3f5 CheckpointIoComplete(UmsIoRequest &), void * 0x319c1400, IoResult * 0x00000000) line 691 + 28 bytes
DBTABLE::GatherWrite(DBTABLE * const, BUF * 0x319c1400, unsigned int 0x00000001, const PageId & {...}, void (UmsIoRequest &)* 0x0046b3f5 CheckpointIoComplete(UmsIoRequest &), void * 0x319c1400) line 537
BPool::WriteMultiple(BPool * const, BUF * const 0x319c1400, BPool::WM_Opt EagerWrite) line 5507
PageFlushManager::HandoffBuf(PageFlushManager * const, unsigned int 0x00000017, int 0x00000001) line 10201
PageFlushManager::ManageBuf(PageFlushManager * const, BUF * 0x00000000, int 0x00000001) line 10049
PageFlushManager::ManageMinimallyLoggedBuf(PageFlushManager * const, BUF * 0x319ff880) line 9975
PageRef::ComputeLogMode(LogMode nonlogged, BUF * 0x319ff880, XDES * 0x46842c9c, int 0x00000001) line 960
PageRef::FormatBase(PageRef * const, XDES * 0x46842c9c, LogMode nonlogged, Page::PageType TEXT_MIX_PAGE, const PageId & {...}, int 0x0ea330e9, unsigned short 0x00ff, unsigned short 0x0000, unsigned char 0x00, unsigned short 0x0000, unsigned char 0x00, unsigned long 0x00000000, const PageId & {...}, const PageId & {...}, const PageId & {...}) line 3438 + 16 bytes
PageRef::Format(SDES * 0x4623f3ec, Page::PageType TEXT_MIX_PAGE, const PageId & {...}, int 0x0ea330e9, unsigned short 0x00ff, unsigned short 0x0000, unsigned char 0x00, unsigned short 0x0000, unsigned char 0x00, const PageId & {...}, const PageId & {...}) line 3271
PageRef::FormatAndFix(PageRef * const, SDES * 0x4623f3ec, Page::PageType TEXT_MIX_PAGE, const PageId & {...}, int 0x0ea330e9, unsigned short 0x00ff, unsigned short 0x0000, unsigned char 0x00, unsigned short 0x0000, unsigned char 0x00, const PageId & {...}, const PageId & {...}) line 4604 + 40 bytes
AppendOnlySpaceAllocator::AllocateAndFixPage(AppendOnlySpaceAllocator * const, PageRef & {...}, SDES * 0x46842c9c, IDES * 0x456ec90c, Page::PageType TEXT_MIX_PAGE, const PageId & {...}) line 669
AppendOnlySpaceAllocator::FindSpaceAndFixPage(AppendOnlySpaceAllocator * const, PageRef & {...}, int & 0x4623f3ec, SDES * 0x4623f3ec, IDES * 0x456ec90c, Page::PageType TEXT_MIX_PAGE, unsigned int 0x0000080c, const PageId & {...}, int 0x00000000) line 777
BlobBase::AllocDataNode(BlobBase * const, PageRef & {...}, int & 0x00000000, const void * 0x249aaf98, unsigned int 0x000007fe, BlobBase::ModifyNodeFlag DataNodeModify) line 160
Blob::InsertNonFull(Blob * const, PageRef & {...}, unsigned __int64 0x0000000000000000, unsigned int 0x000007fe, const unsigned char * 0x249aaf98, unsigned int 0x00000000, const unsigned char * 0x249a8fd8) line 1361
Blob::InsertWholePage(Blob * const, PageRef & {...}, unsigned __int64 0x0000000000000000, unsigned int 0x000007fe, const unsigned char * 0x249aaf98, unsigned int 0x00000000, const unsigned char * 0x249a8fd8) line 1208 + 30 bytes
Blob::Insert(Blob * const, unsigned __int64 0x0000000000000000, unsigned int 0x000007fe, const unsigned char * 0x249aaf98) line 1014
BlobManager::ReplaceAtWithILB(BlobManager * const, unsigned __int64 0x0000000000000000, ILockBytesSS * 0x249acfcc, unsigned __int64 0x000007fe00000000, unsigned __int64 * 0x249acfe8) line 410 + 22 bytes
BlobManager::ReplaceAt(BlobManager * const, unsigned __int64 0x0000000000000000, void * 0x112e7217, unsigned __int64 0x0000000000000000, unsigned long 0x000007fe, unsigned long * 0x249ad090) line 446
BlobManager::WriteAt(BlobManager * const, unsigned __int64 0x0000000000000000, const void * 0x112e7217, unsigned long 0x000007fe, unsigned long * 0x249ad090) line 222 + 24 bytes
BlobManager::StreamWrite(BlobManager * const, const void * 0x112e7217, unsigned long 0x000007fe, unsigned long * 0x249ad090) line 2521
LockBytesSS::StreamWrite(LockBytesSS * const 0x4623ff94, const void * 0x112e7217, unsigned long 0x000007fe, unsigned long * 0x249ad090) line 526
IMPPROV! 41901b63()
IMPPROV! 41901fb8()
IMPPROV! 419033ba()
IMPPROV! 4190ee94()
CQScanRmtScan::GetRow(CQScanRmtScan * const, unsigned long * 0x488964e4, unsigned long * 0x488964e4) line 1287 + 20 bytes
CQScanTop::GetRow(CQScanTop * const, unsigned long * 0x488964e4, unsigned long * 0x488964e4) line 292 + 34 bytes
CQScanUpdate::GetRow(CQScanUpdate * const, unsigned long * 0x488964e8, unsigned long * 0x488964e4) line 612
CQueryScan::GetRow(CQueryScan * const, unsigned long * 0x488964e4, unsigned long * 0x488964e4) line 4283
CStmtQuery::ErsqExecuteQuery(const CStmtQuery * const, CMsqlExecContext * 0x48896284 {CMsqlExecContext}, const CEsComp * 0x00000000, const CEsComp * 0x00000000, unsigned long * 0x488964e4, int 0x00000001, int 0x00000000) line 873
CStmtDML::XretExecuteNormal(const CStmtDML * const, CMsqlExecContext * 0x48896284 {CMsqlExecContext}) line 1963 + 22 bytes
CStmtDML::XretExecute(const CStmtDML * const, CMsqlExecContext * 0x48896284 {CMsqlExecContext}) line 305
CMsqlExecContext::ExecuteStmts(CMsqlExecContext * const, ExecutionContext * 0x462415fc) line 1407 + 9 bytes
CMsqlExecContext::Execute(CMsqlExecContext * const, CCompPlan * 0x00000000 {CCompPlan}, CParamExchange * 0x00000000) line 1192 + 10 bytes
CSQLSource::Execute(CSQLSource * const, CParamExchange * 0x00000000) line 1246 + 12 bytes
CSQLSource::SeExecute(CSQLSource * const) line 1301
ExecSql(SQLError & {...}, unsigned short * 0x20420020, unsigned int 0x00000000) line 186 + 15 bytes
CBcpImport::ExecInsertStmt(CBcpImport * const, unsigned long 0x00000900) line 1237 + 15 bytes
BcpImportMain(unsigned short * 0x4889e800, int 0x00000024, CBulkImp * 0x4889ed3c, unsigned __int64 & 0x0000000000000000, unsigned __int64 & 0x0000000000000001) line 255
CStmtBulkIns::XretExecute(const CStmtBulkIns * const, CMsqlExecContext * 0x488a4284 {CMsqlExecContext}) line 1675
CMsqlExecContext::ExecuteStmts(CMsqlExecContext * const, ExecutionContext * 0x462415fc) line 1407 + 9 bytes
CMsqlExecContext::Execute(CMsqlExecContext * const, CCompPlan * 0x00000000 {CCompPlan}, CParamExchange * 0x00000000) line 1192 + 10 bytes
CSQLSource::Execute(CSQLSource * const, CParamExchange * 0x00000000) line 1246 + 12 bytes
CStmtExecStr::XretExecute(const CStmtExecStr * const, CMsqlExecContext * 0x46874284 {CMsqlExecContext}) line 1043
CMsqlExecContext::ExecuteStmts(CMsqlExecContext * const, ExecutionContext * 0x462415fc) line 1407 + 9 bytes
CMsqlExecContext::Execute(CMsqlExecContext * const, CCompPlan * 0x00000000 {CCompPlan}, CParamExchange * 0x468724bc) line 1192 + 10 bytes
CSQLSource::Execute(CSQLSource * const, CParamExchange * 0x468724bc) line 1246 + 12 bytes
CStmtExec::XretLocalExec(const CStmtExec * const, CMsqlExecContext * 0x46872020, unsigned short * 0x249af208, int 0x00000012, WParseName * 0x249af768) line 667
CStmtExec::XretExecute(const CStmtExec * const, CMsqlExecContext * 0x46872284 {CMsqlExecContext}) line 554 + 33 bytes
CMsqlExecContext::ExecuteStmts(CMsqlExecContext * const, ExecutionContext * 0x462415fc) line 1407 + 9 bytes
CMsqlExecContext::Execute(CMsqlExecContext * const, CCompPlan * 0x00000000 {CCompPlan}, CParamExchange * 0x00000000) line 1192 + 10 bytes
CSQLSource::Execute(CSQLSource * const, CParamExchange * 0x00000000) line 1246 + 12 bytes
language_exec(srv_proc * 0x4623c2bc) line 657
process_commands(srv_proc * 0x4623c2bc) line 1655 + 6 bytes
ProcessWorkRequests(UmsWorkQueue * 0x00e47790) line 431 + 13 bytes
ThreadStartRoutine(void * 0x3d32c718) line 263 + 7 bytes
MSVCRT! 7800bea1()
KERNEL32! BaseThreadStart@8 + 82 bytes
				

Properties

Article ID: 300380 - Last Review: October 17, 2003 - Revision: 3.2
APPLIES TO
  • Microsoft SQL Server 2000 Standard Edition
Keywords: 
kbbug kbfix kbsqlserv2000sp1fix KB300380

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com