Server crashes while restoring backup if the shadow file already exists
-----------------------------------------------------------------------

                 Key: CORE-5566
                 URL: http://tracker.firebirdsql.org/browse/CORE-5566
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
            Reporter: Dmitry Yemanov


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::Inherit<Firebird::ITransaction>
 > > > >::cloopcommitDispatcher(Firebird::ITransaction * 
self=0x00000000024c9040, Firebird::IStatus * status=0x000000000012a9d0)  Line 
7105 + 0x36 bytes C++
  
fbclient.dll!Firebird::ITransaction::commit<Firebird::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 


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to