Server crashes while restoring backup if the shadow file already exists [CORE5566] #5833
Labels
affect-version: 2.1.7
affect-version: 2.5.0
affect-version: 2.5.1
affect-version: 2.5.2 Update 1
affect-version: 2.5.2
affect-version: 2.5.3 Update 1
affect-version: 2.5.3
affect-version: 2.5.4
affect-version: 2.5.5
affect-version: 2.5.6
affect-version: 2.5.7
affect-version: 3.0.0
affect-version: 3.0.1
affect-version: 3.0.2
affect-version: 4.0 Initial
component: engine
fix-version: 2.5.8
fix-version: 3.0.3
fix-version: 4.0 Alpha 1
priority: major
qa: deferred
type: bug
Submitted by: John Kilin (johnkilin)
Attachments:
test.fbk
gbak -c -rep C:\TEMP\TEST.FBK C:\TEMP\TEST.FDB
Database is configured to have a shadow at C:\TEMP\CITYCARD.SHD. If there's no such a file, restore succeeds. If the file exists, expected error is reported:
gbak: ERROR:I/O error during "CreateFile (create)" operation for file "C:\TEMP\CITYCARD.SHD"
gbak: ERROR: Error while trying to create file
gbak: ERROR: Файл существует.
gbak:Exiting before completion due to errors
but then the engine crashes with the following stack:
msvcr100d.dll!memcmp() Line 127 Asm
engine12.dll!Firebird::MetaName::compare(const Firebird::MetaName & m={...}) Line 90 + 0x38 bytes C++
engine12.dll!Firebird::MetaName::operator==(const Firebird::MetaName & m={...}) Line 96 + 0x32 bytes C++
engine12.dll!PAR_find_proc_field(const Jrd::jrd_prc * procedure=0x00000000033f2260, const Firebird::MetaName & name={...}) Line 771 + 0x16 bytes C++
engine12.dll!Jrd::FieldNode::parse(Jrd::thread_db * tdbb=0x000000000012a4f0, Firebird::MemoryPool & pool={...}, Jrd::CompilerScratch * csb=0x000000000341ad50, const unsigned char blrOp='') Line 4855 + 0x15 bytes C++
engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50) Line 1611 + 0x4b bytes C++
engine12.dll!PAR_parse_value(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50) Line 1544 + 0xf bytes C++
engine12.dll!parseMap(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50, unsigned long stream=0x00000001) Line 3326 + 0x15 bytes C++
engine12.dll!Jrd::UnionSourceNode::parse(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50, const short blrOp=0x004c) Line 1641 + 0x1a bytes C++
engine12.dll!PAR_parseRecordSource(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50) Line 1281 + 0x15 bytes C++
engine12.dll!PAR_rse(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50, short rse_op=0x0043) Line 1306 + 0x15 bytes C++
engine12.dll!PAR_rse(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50) Line 1426 + 0x15 bytes C++
engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::CompilerScratch * csb=0x000000000341ad50) Line 1587 + 0x15 bytes C++
engine12.dll!PAR_blr(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_rel * relation=0x000000000341a750, const unsigned char * blr=0x0000000000129298, unsigned long blr_length=0x000001d8, Jrd::CompilerScratch * view_csb=0x0000000000000000, Jrd::CompilerScratch * * csb_ptr=0x00000000001295f8, Jrd::JrdStatement * * statementPtr=0x0000000000000000, const bool trigger=false, unsigned short flags=0x0000) Line 235 + 0x1a bytes C++
engine12.dll!MET_parse_blob(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_rel * relation=0x000000000341a750, Jrd::bid * blob_id=0x0000000000129898, Jrd::CompilerScratch * * csb_ptr=0x00000000001295f8, Jrd::JrdStatement * * statementPtr=0x0000000000000000, const bool trigger=false, bool validationExpr=false) Line 7750 + 0x58 bytes C++
engine12.dll!MET_get_dependencies(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_rel * relation=0x000000000341a750, const unsigned char * blob=0x0000000000000000, const unsigned long blob_length=0x00000000, Jrd::CompilerScratch * view_csb=0x0000000000000000, Jrd::bid * blob_id=0x0000000000129898, Jrd::JrdStatement * * statementPtr=0x0000000000000000, Jrd::CompilerScratch * * csb_ptr=0x0000000000129a18, const Firebird::MetaName & object_name={...}, int type=0x00000001, unsigned short flags=0x0000, Jrd::jrd_tra * transaction=0x000000000308c710, const Firebird::MetaName & domain_validation={...}) Line 5826 + 0x8d bytes C++
engine12.dll!MET_scan_relation(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_rel * relation=0x000000000341a750) Line 8796 + 0x92 bytes C++
engine12.dll!scan_relation(Jrd::thread_db * tdbb=0x000000000012a4f0, short phase=0x0003, Jrd::DeferredWork * work=0x0000000003414b98, Jrd::jrd_tra * __formal=0x000000000308c710) Line 10983 C++
engine12.dll!DFW_perform_work(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_tra * transaction=0x000000000308c710) Line 4746 + 0x28 bytes C++
engine12.dll!TRA_commit(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_tra * transaction=0x000000000308c710, const bool retaining_flag=false) Line 380 C++
engine12.dll!commit(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_tra * transaction=0x000000000308c710, const bool retaining_flag=false) Line 5484 C++
engine12.dll!JRD_commit_transaction(Jrd::thread_db * tdbb=0x000000000012a4f0, Jrd::jrd_tra * transaction=0x000000000308c710) Line 7729 C++
engine12.dll!Jrd::JTransaction::commit(Firebird::CheckStatusWrapper * user_status=0x000000000012a6e8) Line 2203 C++
engine12.dll!Firebird::ITransactionBaseImpl<Jrd::JTransaction,Firebird::CheckStatusWrapper,Firebird::IReferenceCountedImpl<Jrd::JTransaction,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IVersionedImpl<Jrd::JTransaction,Firebird::CheckStatusWrapper,Firebird::InheritFirebird::ITransaction\ > > > >::cloopcommitDispatcher(Firebird::ITransaction * self=0x00000000024c9040, Firebird::IStatus * status=0x000000000012a9d0) Line 7105 + 0x36 bytes C++
fbclient.dll!Firebird::ITransaction::commitFirebird::CheckStatusWrapper\(Firebird::CheckStatusWrapper * status=0x000000000012a9c8) Line 1109 C++
fbclient.dll!Why::YTransaction::commit(Firebird::CheckStatusWrapper * status=0x000000000012a9c8) Line 4781 C++
fbclient.dll!isc_commit_transaction(__int64 * userStatus=0x000000000012aac0, unsigned int * traHandle=0x000000000012b100) Line 1711 C++
gbak.exe!close_out_transaction(gbak_action action=RESTORE, unsigned int * handle=0x000000000012b100) Line 1741 C++
gbak.exe!gbak(Firebird::UtilSvc * uSvc=0x00000000004b07a0) Line 1321 C++
gbak.exe!main(int argc=0x00000009, char * * argv=0x0000000001c626f0) Line 64 + 0x1f bytes C++
gbak.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C
gbak.exe!mainCRTStartup() Line 371 C
kernel32.dll!BaseThreadInitThunk() + 0xd bytes
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!RtlUserThreadStart() + 0x21 bytes
Commits: 8dbf4e8 8735e33 48d6f37
====== Test Details ======
See note 22/Jun/17 12:42 PM
The text was updated successfully, but these errors were encountered: