Microsoft KB Archive/300380

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

Article ID: 300380

Article Last Modified on 10/17/2003

-

APPLIES TO


 * Microsoft SQL Server 2000 Standard Edition

-



This article was previously published under Q300380



BUG #: 235056 (SHILOH_BUGS)



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

Additional query words: av stack dump

Keywords: kbbug kbfix kbsqlserv2000sp1fix KB300380

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.