Write target for dirty page could be undefined if error happens when nbackup 
state is changed
---------------------------------------------------------------------------------------------

                 Key: CORE-3535
                 URL: http://tracker.firebirdsql.org/browse/CORE-3535
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.5.0
            Reporter: Vlad Khorsun


The bug show itself in DEBUG build - assertion failed at cch.cpp\write_page() 
near line 5022 :

                // write out page to main database file, and to any
                // shadows, making a special case of the header page
                BackupManager* bm = dbb->dbb_backup_manager;
                const int backup_state = bm->getState();

                if (bdb->bdb_page.getPageNum() >= 0)
                {
                        fb_assert(backup_state != nbak_state_unknown);          
        <------- HERE
                        page->pag_pageno = bdb->bdb_page.getPageNum();

When exception happens in BackupManager::endBackup() method than destructor
BackupManager::StateWriteGuard::~StateWriteGuard() released the state lock 
*before* 
backup state is set into nbak_state_unknown. In this small time window it is 
possible 
that another thread fetched and modified some page.


-- 
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

        

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a 
definitive record of customers, application performance, security 
threats, fraudulent activity and more. Splunk takes this data and makes 
sense of it. Business sense. IT sense. Common sense.. 
http://p.sf.net/sfu/splunk-d2d-c1
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to