Test caused CRASH of server or FB utility. Dump LastModified: UTC 26.06.2025 07:00:34.1170
You can download: Memory dump, 36549329 bytes       Stack trace, 7257 bytes
Show firebird.log [FOUND messages for interval when this test was running]
Jump to: failed_thread_stack    output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
Server crashed ?
Network / firewall ?

Test caused CRASH of server or FB utility. Dump LastModified: UTC 26.06.2025 07:00:34.1170
failed on teardown with "firebird.driver.types.DatabaseError: Unable to complete network request to host "localhost".
-Failed to establish a connection."

LOG DETAILS:

2025-06-26 10:12:44.756
2025-06-26 10:12:44.756 act_db_main = <firebird.qa.plugin.Action object at [hex]>
2025-06-26 10:12:44.756 act_db_repl = <firebird.qa.plugin.Action object at [hex]>
2025-06-26 10:12:44.756 db_main_owner = <firebird.qa.plugin.User object at [hex]>
2025-06-26 10:12:44.756 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-06-26 10:12:44.756
2025-06-26 10:12:44.756     @pytest.mark.replication
2025-06-26 10:12:44.756     @pytest.mark.version('>=4.0.5')
2025-06-26 10:12:44.756     def test_1(act_db_main: Action,  act_db_repl: Action, db_main_owner: User, capsys):
2025-06-26 10:12:44.756
2025-06-26 10:12:44.757         # Map for storing mnemonas and details for every FAILED step:
2025-06-26 10:12:44.757         run_errors_map = {}
2025-06-26 10:12:44.757
2025-06-26 10:12:44.757         # Obtain full path + filename for DB_MAIN and DB_REPL aliases.
2025-06-26 10:12:44.757         # NOTE: we must NOT use 'a.db.db_path' for ALIASED databases!
2025-06-26 10:12:44.757         # It will return '.' rather than full path+filename.
2025-06-26 10:12:44.757         # Use only con.info.name for that!
2025-06-26 10:12:44.757         #
2025-06-26 10:12:44.757         db_info = {}
2025-06-26 10:12:44.757         for a in (act_db_main, act_db_repl):
2025-06-26 10:12:44.757             with a.db.connect() as con:
2025-06-26 10:12:44.757                 db_info[a,  'db_full_path'] = con.info.name
2025-06-26 10:12:44.757
2025-06-26 10:12:44.757         run_errors_map['init_reset'] = reset_replication(act_db_main, act_db_repl, db_info[act_db_main,'db_full_path'], db_info[act_db_repl,'db_full_path'], db_main_owner)
2025-06-26 10:12:44.757
2025-06-26 10:12:44.757         # Result: owner of db_main_alias = db_main_owner, i.e. NOT 'SYSDBA'
2025-06-26 10:12:44.757
2025-06-26 10:12:44.757         sql_init = f"""
2025-06-26 10:12:44.757             set bail on;
2025-06-26 10:12:44.757             recreate table test (
2025-06-26 10:12:44.758                 id int generated by default as identity constraint test_pk primary key
2025-06-26 10:12:44.758                 ,f01 int
2025-06-26 10:12:44.758             );
2025-06-26 10:12:44.758
2025-06-26 10:12:44.758             recreate table t_completed(id int primary key);
2025-06-26 10:12:44.758             commit;
2025-06-26 10:12:44.758         """
2025-06-26 10:12:44.758         act_db_main.isql(switches=['-q', '-user', db_main_owner.name, '-pass', db_main_owner.password], credentials = False, input = sql_init, combine_output = True)
2025-06-26 10:12:44.758         run_errors_map['out_prep_ddl'] = act_db_main.clean_stdout
2025-06-26 10:12:44.758         act_db_main.reset()
2025-06-26 10:12:44.758
2025-06-26 10:12:44.758         if max(v.strip() for v in run_errors_map.values()):
2025-06-26 10:12:44.758             # Some problem raised during init_sql execution
2025-06-26 10:12:44.758             pass
2025-06-26 10:12:44.758         else:
2025-06-26 10:12:44.758             # Query to be used for check that all DB objects present in replica (after last DML statement completed on master DB):
2025-06-26 10:12:44.758             ddl_ready_query = "select 1 from rdb$relations where rdb$relation_name = upper('t_completed')"
2025-06-26 10:12:44.758             ######################################################
2025-06-26 10:12:44.758             ###  WAIT UNTIL REPLICA GETS INITIAL DDL AND DATA  ###
2025-06-26 10:12:44.758             ######################################################
2025-06-26 10:12:44.758             watch_replica( act_db_repl, MAX_TIME_FOR_WAIT_DATA_IN_REPLICA, ddl_ready_query)
2025-06-26 10:12:44.759
2025-06-26 10:12:44.759             # Must be EMPTY:
2025-06-26 10:12:44.759             run_errors_map['out_repl_ddl'] = capsys.readouterr().out
2025-06-26 10:12:44.759
2025-06-26 10:12:44.759
2025-06-26 10:12:44.759         if max(v.strip() for v in run_errors_map.values()):
2025-06-26 10:12:44.759             # Some problem raised with delivering DDL changes to replica
2025-06-26 10:12:44.759             pass
2025-06-26 10:12:44.759         else:
2025-06-26 10:12:44.759
2025-06-26 10:12:44.759             sql_revoke_access = f"""
2025-06-26 10:12:44.759                 set wng off;
2025-06-26 10:12:44.759                 set list on;
2025-06-26 10:12:44.759                 revoke delete on test from {db_main_owner.name};
2025-06-26 10:12:44.759                 commit;
2025-06-26 10:12:44.759                 select 1 as db_main_privilege_unexp_remains
2025-06-26 10:12:44.759                 from rdb$database
2025-06-26 10:12:44.759                 where exists (
2025-06-26 10:12:44.759                     select 1 from rdb$user_privileges p
2025-06-26 10:12:44.759                     where p.rdb$relation_name = upper('test') and p.rdb$privilege = upper('D')
2025-06-26 10:12:44.759                 );
2025-06-26 10:12:44.760                 commit;
2025-06-26 10:12:44.760             """
2025-06-26 10:12:44.760             act_db_main.isql(switches=['-q', '-user', db_main_owner.name, '-pass', db_main_owner.password], credentials = False, input = sql_revoke_access, combine_output = True)
2025-06-26 10:12:44.760             run_errors_map['db_main_privilege_unexp_remains']  = act_db_repl.stdout # must be EMPTY
2025-06-26 10:12:44.760             act_db_main.reset()
2025-06-26 10:12:44.760
2025-06-26 10:12:44.760
2025-06-26 10:12:44.760         if max(v.strip() for v in run_errors_map.values()):
2025-06-26 10:12:44.760             # Some problem was in just executed statement
2025-06-26 10:12:44.760             pass
2025-06-26 10:12:44.760         else:
2025-06-26 10:12:44.760             ############################################################
2025-06-26 10:12:44.760             ###  WAIT UNTIL REPLICA APPLY 'REVOKE' PRIVILEGE COMMAND ###
2025-06-26 10:12:44.760             ############################################################
2025-06-26 10:12:44.760             # ( a: Action, max_allowed_time_for_wait, ddl_ready_query = '', isql_check_script = '', replica_expected_out = ''):
2025-06-26 10:12:44.760             chk_repl_sql = f"set list on;select 1 as db_repl_privilege_unexp_remains from rdb$database where exists(select 1 from rdb$user_privileges p where p.rdb$relation_name = upper('test') and p.rdb$privilege = upper('D'));"
2025-06-26 10:12:44.760             watch_replica( act_db_repl, MAX_TIME_FOR_WAIT_DATA_IN_REPLICA, ddl_ready_query = '', isql_check_script = chk_repl_sql, replica_expected_out = '' )
2025-06-26 10:12:44.760             # Must be EMPTY:
2025-06-26 10:12:44.761             run_errors_map['db_repl_privilege_not_deleted'] = capsys.readouterr().out
2025-06-26 10:12:44.761
2025-06-26 10:12:44.761         # This test changes OWNER of db_main to NON-sysdba.
2025-06-26 10:12:44.761         # We have to revert this change regardless on test outcome.
2025-06-26 10:12:44.761 >       run_errors_map['final_reset'] = reset_replication(act_db_main, act_db_repl, db_info[act_db_main,'db_full_path'], db_info[act_db_repl,'db_full_path'])
2025-06-26 10:12:44.761
2025-06-26 10:12:44.761 tests\functional\replication\test_grantor_not_changes_in_replica_if_owner_not_sysdba.py:483:
2025-06-26 10:12:44.761 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-06-26 10:12:44.761
2025-06-26 10:12:44.761 act_db_main = <firebird.qa.plugin.Action object at [hex]>
2025-06-26 10:12:44.761 act_db_repl = <firebird.qa.plugin.Action object at [hex]>
2025-06-26 10:12:44.761 db_main_file = 'H:\\QA\\rundaily-2024\\unpacked-snapshot.tmp\\examples\\empbuild\\qa_replication\\db_main.fdb'
2025-06-26 10:12:44.761 db_repl_file = 'H:\\QA\\rundaily-2024\\unpacked-snapshot.tmp\\examples\\empbuild\\qa_replication\\db_repl.fdb'
2025-06-26 10:12:44.761 db_main_owner = None
2025-06-26 10:12:44.761
2025-06-26 10:12:44.761     def reset_replication(act_db_main: Action, act_db_repl: Action, db_main_file, db_repl_file, db_main_owner: User = None):
2025-06-26 10:12:44.761         out_reset = ''
2025-06-26 10:12:44.761         failed_shutdown_db_map = {} # K = 'db_main', 'db_repl'; V = error that occurred when we attempted to change DB state to full shutdown (if it occurred)
2025-06-26 10:12:44.761
2025-06-26 10:12:44.761 >       with act_db_main.connect_server() as srv:
2025-06-26 10:12:44.762
2025-06-26 10:12:44.762 tests\functional\replication\test_grantor_not_changes_in_replica_if_owner_not_sysdba.py:105:
2025-06-26 10:12:44.762 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-06-26 10:12:44.762
2025-06-26 10:12:44.762 server = 'qa_rundaily_fb40'
2025-06-26 10:12:44.762
2025-06-26 10:12:44.762     def connect_server(server: str, *, user: str=None, password: str=None,
2025-06-26 10:12:44.762                        crypt_callback: iCryptKeyCallbackImpl=None,
2025-06-26 10:12:44.762                        expected_db: str=None, role: str=None, encoding: str=None,
2025-06-26 10:12:44.762                        encoding_errors: str=None) -> Server:
2025-06-26 10:12:44.762         """Establishes a connection to server's service manager.
2025-06-26 10:12:44.762
2025-06-26 10:12:44.762         Arguments:
2025-06-26 10:12:44.762             server: Server host machine or Server configuration name.
2025-06-26 10:12:44.762             user: User name.
2025-06-26 10:12:44.762             password: User password.
2025-06-26 10:12:44.762             crypt_callback: Callback that provides encryption key.
2025-06-26 10:12:44.762             expected_db: Database that would be accessed (for using services with non-default
2025-06-26 10:12:44.762                          security database)
2025-06-26 10:12:44.762             role: SQL role used for connection.
2025-06-26 10:12:44.763             encoding: Encoding for string values passed in parameter buffer. Default is
2025-06-26 10:12:44.763                `.ServerConfig.encoding`.
2025-06-26 10:12:44.763             encoding_errors: Error handler used for encoding errors. Default is
2025-06-26 10:12:44.763                `.ServerConfig.encoding_errors`.
2025-06-26 10:12:44.763
2025-06-26 10:12:44.763         Hooks:
2025-06-26 10:12:44.763             Event `.ServerHook.ATTACHED`: Executed before `Service` instance is
2025-06-26 10:12:44.763             returned. Hook must have signature::
2025-06-26 10:12:44.763
2025-06-26 10:12:44.763                 hook_func(server: Server) -> None
2025-06-26 10:12:44.763
2025-06-26 10:12:44.763             Any value returned by hook is ignored.
2025-06-26 10:12:44.763         """
2025-06-26 10:12:44.763         srv_config = driver_config.get_server(server)
2025-06-26 10:12:44.763         if srv_config is None:
2025-06-26 10:12:44.763             srv_config = driver_config.server_defaults
2025-06-26 10:12:44.763             host = server or None
2025-06-26 10:12:44.763             port = None
2025-06-26 10:12:44.763         else:
2025-06-26 10:12:44.763             host = srv_config.host.value
2025-06-26 10:12:44.764             port = srv_config.port.value
2025-06-26 10:12:44.764         if host is None:
2025-06-26 10:12:44.764             host = 'service_mgr'
2025-06-26 10:12:44.764         if not host.endswith('service_mgr'):
2025-06-26 10:12:44.764             if host and not host.endswith(':'):
2025-06-26 10:12:44.764                 if port:
2025-06-26 10:12:44.764                     host += f"/{port}"
2025-06-26 10:12:44.764                 host += ':'
2025-06-26 10:12:44.764             host += 'service_mgr'
2025-06-26 10:12:44.764         if user is None:
2025-06-26 10:12:44.764             user = srv_config.user.value
2025-06-26 10:12:44.764         if password is None:
2025-06-26 10:12:44.764             password = srv_config.password.value
2025-06-26 10:12:44.764         spb = SPB_ATTACH(user=user, password=password, config=srv_config.config.value,
2025-06-26 10:12:44.764                          trusted_auth=srv_config.trusted_auth.value,
2025-06-26 10:12:44.764                          auth_plugin_list=srv_config.auth_plugin_list.value,
2025-06-26 10:12:44.764                          expected_db=expected_db, encoding=srv_config.encoding.value,
2025-06-26 10:12:44.764                          errors=srv_config.encoding_errors.value, role=role)
2025-06-26 10:12:44.764         spb_buf = spb.get_buffer()
2025-06-26 10:12:44.765         with a.get_api().master.get_dispatcher() as provider:
2025-06-26 10:12:44.765             if crypt_callback is not None:
2025-06-26 10:12:44.765                 provider.set_dbcrypt_callback(crypt_callback)
2025-06-26 10:12:44.765 >           svc = provider.attach_service_manager(host, spb_buf)
2025-06-26 10:12:44.765
2025-06-26 10:12:44.765 C:\Python3x\Lib\site-packages\firebird\driver\core.py:5692:
2025-06-26 10:12:44.765 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-06-26 10:12:44.765
2025-06-26 10:12:44.765 self = <firebird.driver.interfaces.iProvider object at [hex]>
2025-06-26 10:12:44.765 service = 'localhost/33337:service_mgr'
2025-06-26 10:12:44.765 spb = b'\x02\x02\x1c\x06SYSDBA\x1d\tmasterkey'
2025-06-26 10:12:44.765
2025-06-26 10:12:44.765     def attach_service_manager(self, service: str, spb: bytes) -> iService:
2025-06-26 10:12:44.765         "Replaces `isc_service_attach()`"
2025-06-26 10:12:44.765         result = self.vtable.attachServiceManager(self, self.status, service.encode(), len(spb), spb)
2025-06-26 10:12:44.765 >       self._check()
2025-06-26 10:12:44.765
2025-06-26 10:12:44.765 C:\Python3x\Lib\site-packages\firebird\driver\interfaces.py:1310:
2025-06-26 10:12:44.765 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-06-26 10:12:44.765
2025-06-26 10:12:44.765 self = <firebird.driver.interfaces.iProvider object at [hex]>
2025-06-26 10:12:44.766
2025-06-26 10:12:44.766     def _check(self) -> None:
2025-06-26 10:12:44.766         state = self.status.get_state()
2025-06-26 10:12:44.766         if StateFlag.ERRORS in state:
2025-06-26 10:12:44.766 >           raise self.__report(DatabaseError, self.status.get_errors())
2025-06-26 10:12:44.766 E           firebird.driver.types.DatabaseError: Unable to complete network request to host "localhost".
2025-06-26 10:12:44.766 E           -Failed to establish a connection.
2025-06-26 10:12:44.766
2025-06-26 10:12:44.766 C:\Python3x\Lib\site-packages\firebird\driver\interfaces.py:113: DatabaseError
2025-06-26 10:12:44.766 ---------------------------- Captured stdout setup ----------------------------
2025-06-26 10:12:44.766 CREATE user: TMP_GH_8058 PLUGIN: Srp
3 #text
request = <SubRequest 'db_main_owner' for <Function test_1>>

    @pytest.fixture
    def user_fixture(request: pytest.FixtureRequest) -> User:
>       with User(request.getfixturevalue(db_fixture_name), name=name, password=password,
                  plugin=plugin, charset=charset, active=active, tags=tags,
                  first_name=first_name, middle_name=middle_name, last_name=last_name,
                  admin=admin, do_not_create=do_not_create) as user:

src\firebird\qa\plugin.py:1243: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <firebird.qa.plugin.User pytest object at [hex]>, exc_type = None
exc_value = None, traceback = None

    def __exit__(self, exc_type, exc_value, traceback) -> None:
>       if self.exists():

src\firebird\qa\plugin.py:1071: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

database = 'db_main_alias'

    def connect(database: str, *, user: str=None, password: str=None, role: str=None,
                no_gc: bool=None, no_db_triggers: bool=None, dbkey_scope: DBKeyScope=None,
                crypt_callback: iCryptKeyCallbackImpl=None, charset: str=None,
                auth_plugin_list: str=None, session_time_zone: str=None) -> Connection:
        """Establishes a connection to the database.
    
        Arguments:
            database: DSN or Database configuration name.
            user: User name.
            password: User password.
            role: User role.
            no_gc: Do not perform garbage collection for this connection.
            no_db_triggers: Do not execute database triggers for this connection.
            dbkey_scope: DBKEY scope override for connection.
            crypt_callback: Callback that provides encryption key for the database.
            charset: Character set for connection.
            auth_plugin_list: List of authentication plugins override
            session_time_zone: Session time zone [Firebird 4]
    
        Hooks:
            Event `.ConnectionHook.ATTACH_REQUEST`: Executed after all parameters
            are preprocessed and before `Connection` is created. Hook
            must have signature::
    
                hook_func(dsn: str, dpb: bytes) -> Optional[Connection]
    
            Hook may return `Connection` instance or None.
            First instance returned by any hook will become the return value
            of this function and other hooks are not called.
    
            Event `.ConnectionHook.ATTACHED`: Executed before `Connection` instance is
            returned. Hook must have signature::
    
                hook_func(connection: Connection) -> None
    
            Any value returned by hook is ignored.
        """
        db_config = driver_config.get_database(database)
        if db_config is None:
            db_config = driver_config.db_defaults
        else:
            database = db_config.database.value
        if db_config.server.value is None:
            srv_config = driver_config.server_defaults
        else:
            srv_config = driver_config.get_server(db_config.server.value)
            if srv_config is None:
                raise ValueError(f"Configuration for server '{db_config.server.value}' not found")
        if user is None:
            user = db_config.user.value
            if user is None:
                user = srv_config.user.value
        if password is None:
            password = db_config.password.value
            if password is None:
                password = srv_config.password.value
        if role is None:
            role = db_config.role.value
        if charset is None:
            charset = db_config.charset.value
        if charset:
            charset = charset.upper()
        if auth_plugin_list is None:
            auth_plugin_list = db_config.auth_plugin_list.value
        if session_time_zone is None:
            session_time_zone = db_config.session_time_zone.value
        dsn = _connect_helper(db_config.dsn.value, srv_config.host.value, srv_config.port.value,
                              database, db_config.protocol.value)
        dpb = DPB(user=user, password=password, role=role, trusted_auth=db_config.trusted_auth.value,
                  sql_dialect=db_config.sql_dialect.value, timeout=db_config.timeout.value,
                  charset=charset, cache_size=db_config.cache_size.value,
                  no_linger=db_config.no_linger.value, utf8filename=db_config.utf8filename.value,
                  no_gc=no_gc, no_db_triggers=no_db_triggers, dbkey_scope=dbkey_scope,
                  dummy_packet_interval=db_config.dummy_packet_interval.value,
                  config=db_config.config.value, auth_plugin_list=auth_plugin_list,
                  session_time_zone=session_time_zone, set_bind=db_config.set_bind.value,
                  decfloat_round=db_config.decfloat_round.value,
                  decfloat_traps=db_config.decfloat_traps.value,
                  parallel_workers=db_config.parallel_workers.value)
>       return __make_connection(False, dsn, db_config.utf8filename.value, dpb.get_buffer(),
                                 db_config.sql_dialect.value, charset, crypt_callback)

C:\Python3x\Lib\site-packages\firebird\driver\core.py:2159: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

create = False, dsn = 'localhost/33337:db_main_alias', utf8filename = False
dpb = b'\x01\x1c\x06SYSDBA\x1d\tmasterkey?\x04\x03\x00\x00\x000\x04UTF8'
sql_dialect = 3, charset = 'UTF8', crypt_callback = None

    def __make_connection(create: bool, dsn: str, utf8filename: bool, dpb: bytes,
                          sql_dialect: int, charset: str,
                          crypt_callback: iCryptKeyCallbackImpl) -> Connection:
        with a.get_api().master.get_dispatcher() as provider:
            if crypt_callback is not None:
                provider.set_dbcrypt_callback(crypt_callback)
            if create:
                att = provider.create_database(dsn, dpb, 'utf-8' if utf8filename else FS_ENCODING)
                con = Connection(att, dsn, dpb, sql_dialect, charset)
            else:
                con = None
                for hook in get_callbacks(ConnectionHook.ATTACH_REQUEST, Connection):
                    try:
                        con = hook(dsn, dpb)
                    except Exception as e:
                        raise InterfaceError("Error in DATABASE_ATTACH_REQUEST hook.", *e.args) from e
                    if con is not None:
                        break
                if con is None:
>                   att = provider.attach_database(dsn, dpb, 'utf-8' if utf8filename else FS_ENCODING)

C:\Python3x\Lib\site-packages\firebird\driver\core.py:2074: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <firebird.driver.interfaces.iProvider pytest object at [hex]>
filename = 'localhost/33337:db_main_alias'
dpb = b'\x01\x1c\x06SYSDBA\x1d\tmasterkey?\x04\x03\x00\x00\x000\x04UTF8'
encoding = 'utf-8'

    def attach_database(self, filename: str, dpb: Optional[bytes] = None, encoding: str = 'ascii') -> iAttachment:
        "Replaces `isc_attach_database()`"
        result = self.vtable.attachDatabase(self, self.status, filename.encode(encoding),
                                            0 if dpb is None else len(dpb), dpb)
>       self._check()

C:\Python3x\Lib\site-packages\firebird\driver\interfaces.py:1300: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <firebird.driver.interfaces.iProvider pytest object at [hex]>

    def _check(self) -> None:
        state = self.status.get_state()
        if StateFlag.ERRORS in state:
>           raise self.__report(DatabaseError, self.status.get_errors())
E           firebird.driver.types.DatabaseError: Unable to complete network request to host "localhost".
E           -Failed to establish a connection.

C:\Python3x\Lib\site-packages\firebird\driver\interfaces.py:113: DatabaseError
4 #stack
# 100000`002c1000 Unfrozen
 #     Call Site
00     ntdll!NtWaitForMultipleObjects+0x14
01     KERNELBASE!WaitForMultipleObjectsEx+0xf0
02     KERNELBASE!WaitForMultipleObjects+0xe
03     kernel32!WerpLaunchAeDebug+0x2cba
04     kernel32!WerpLaunchAeDebug+0x26f6
05     KERNELBASE!UnhandledExceptionFilter+0x3d9
06     ntdll!memset+0x1218
07     ntdll!_C_specific_handler+0x96
08     ntdll!_chkstk+0x11f
09     ntdll!RtlRaiseException+0x484
0a     ntdll!KiUserExceptionDispatcher+0x2e
0b     engine13!Jrd::thread_db::getCancelState(int64 * secondary = 0x00000000`00000000)+0x36 [h:\snapshots\firebird\src\jrd\jrd.cpp @ 9098]
0c     engine13!Jrd::EngineCheckout::{dtor}(void)+0x7b [h:\snapshots\firebird\src\jrd\jrd.h @ 1115]
0d     engine13!Jrd::Database::garbage_collector(class Jrd::Database * dbb = 0x00000000`05e61b40)+0xd34 [h:\snapshots\firebird\src\jrd\vio.cpp @ 5022]
0e     engine13!ThreadFinishSync<Jrd::Database *,0>::internalRun(void)+0x1d [h:\snapshots\firebird\src\common\threadstart.h @ 167]
0f     engine13!ThreadFinishSync<Jrd::Database *,0>::internalRun(void * arg = <Value unavailable error>)+0x9 [h:\snapshots\firebird\src\common\threadstart.h @ 160]
10     engine13!`anonymous-namespace'::ThreadArgs::run(void)+0x5 [h:\snapshots\firebird\src\common\threadstart.cpp @ 78]
11     engine13!threadStart(void * arg = 0x00000000`05a661f0)+0x65 [h:\snapshots\firebird\src\common\threadstart.cpp @ 97]
12     ucrtbase!configthreadlocale+0x92
13     kernel32!BaseThreadInitThunk+0x14
14     ntdll!RtlUserThreadStart+0x21

Full history of outcomes and elapsed time, ms:
NN SNAP_INFO CS_outcome SS_outcome CS_run_time SS_run_time CS_run_beg CS_run_end SS_run_beg SS_run_end
1 4.0.6.3215 2025.06.25 6461d P E 6301 39195 2025.06.26 08:07:08.793 2025.06.26 08:07:15.094 2025.06.26 07:00:05.442 2025.06.26 07:00:44.637
2 4.0.6.3214 2025.06.21 e11f6 P P 7523 7424 2025.06.25 12:46:20.001 2025.06.25 12:46:27.524 2025.06.25 11:44:16.034 2025.06.25 11:44:23.458
3 4.0.6.3213 2025.06.14 f015c P P 6411 7474 2025.06.21 07:46:53.061 2025.06.21 07:46:59.472 2025.06.21 06:44:38.126 2025.06.21 06:44:45.600
4 4.0.6.3212 2025.06.11 bc50d P P 6438 6208 2025.06.14 08:14:33.222 2025.06.14 08:14:39.660 2025.06.14 07:11:45.876 2025.06.14 07:11:52.084
5 4.0.6.3208 2025.06.10 19fe3 P P 6446 8215 2025.06.11 06:41:28.658 2025.06.11 06:41:35.104 2025.06.11 05:39:32.306 2025.06.11 05:39:40.521
6 4.0.6.3207 2025.06.07 205ff P P 6494 6373 2025.06.10 06:42:51.657 2025.06.10 06:42:58.151 2025.06.10 05:40:14.558 2025.06.10 05:40:20.931
7 4.0.6.3206 2025.05.22 d7d10 P P 6315 6227 2025.06.06 06:36:35.032 2025.06.06 06:36:41.347 2025.06.06 05:35:16.758 2025.06.06 05:35:22.985
8 4.0.6.3205 2025.05.07 00148 P P 10181 6309 2025.05.18 06:23:54.676 2025.05.18 06:24:04.857 2025.05.18 05:24:40.928 2025.05.18 05:24:47.237
9 4.0.6.3204 2025.05.06 35b85 P P 6734 6415 2025.05.07 06:32:12.492 2025.05.07 06:32:19.226 2025.05.07 05:31:30.657 2025.05.07 05:31:37.072
10 4.0.6.3203 2025.05.05 c2cbd P P 6292 6363 2025.05.06 06:32:32.998 2025.05.06 06:32:39.290 2025.05.06 05:31:41.338 2025.05.06 05:31:47.701
11 4.0.6.3200 2025.04.18 7ef56 P P 6286 6270 2025.04.26 06:37:05.850 2025.04.26 06:37:12.136 2025.04.26 05:35:53.408 2025.04.26 05:35:59.678
12 4.0.6.3199 2025.04.14 33a10 P P 6464 6698 2025.04.17 06:34:37.483 2025.04.17 06:34:43.947 2025.04.17 05:33:25.165 2025.04.17 05:33:31.863
13 4.0.6.3198 2025.04.13 64a7f P P 6304 6400 2025.04.14 06:32:55.733 2025.04.14 06:33:02.037 2025.04.14 05:31:40.129 2025.04.14 05:31:46.529
14 4.0.6.3195 2025.04.12 82cb5 P P 7367 6121 2025.04.13 06:17:49.547 2025.04.13 06:17:56.914 2025.04.13 05:19:01.136 2025.04.13 05:19:07.257
15 4.0.6.3195 2025.03.28 b9faf P P 7500 6220 2025.04.12 06:37:54.017 2025.04.12 06:38:01.517 2025.04.12 05:35:45.295 2025.04.12 05:35:51.515
16 4.0.6.3194 2025.03.27 ab754 P P 6368 6585 2025.03.28 06:50:26.559 2025.03.28 06:50:32.927 2025.03.28 05:47:52.045 2025.03.28 05:47:58.630
17 4.0.6.3194 2025.03.26 912aa P P 6604 6557 2025.03.27 06:40:44.709 2025.03.27 06:40:51.313 2025.03.27 05:36:58.487 2025.03.27 05:37:05.044
18 4.0.6.3193 2025.03.20 80234 P P 6544 6627 2025.03.24 06:41:14.917 2025.03.24 06:41:21.461 2025.03.24 05:37:04.074 2025.03.24 05:37:10.701
19 4.0.6.3192 2025.03.13 2a9da P P 6269 7380 2025.03.20 06:28:33.447 2025.03.20 06:28:39.716 2025.03.20 05:26:25.897 2025.03.20 05:26:33.277
20 4.0.6.3191 2025.03.10 3d9fd P P 7634 6353 2025.03.13 06:36:06.411 2025.03.13 06:36:14.045 2025.03.13 05:32:31.277 2025.03.13 05:32:37.630
21 4.0.6.3190 2025.02.25 c9928 P P 7547 6642 2025.03.09 06:32:56.847 2025.03.09 06:33:04.394 2025.03.09 05:29:25.334 2025.03.09 05:29:31.976
22 4.0.6.3189 2025.02.22 3fb0b P P 6060 6410 2025.02.25 06:21:51.469 2025.02.25 06:21:57.529 2025.02.25 05:20:04.186 2025.02.25 05:20:10.596
23 4.0.6.3188 2025.02.21 8ee1c P P 5992 6209 2025.02.22 06:15:31.597 2025.02.22 06:15:37.589 2025.02.22 05:14:05.755 2025.02.22 05:14:11.964
24 4.0.6.3186 2025.02.19 92cb6 P P 6053 6188 2025.02.20 04:13:17.973 2025.02.20 04:13:24.026 2025.02.20 03:11:12.524 2025.02.20 03:11:18.712
25 4.0.6.3185 2025.02.16 9cac4 P P 7250 6295 2025.02.17 02:00:29.832 2025.02.17 02:00:37.082 2025.02.17 00:59:19.552 2025.02.17 00:59:25.847
26 4.0.6.3183 2025.02.04 bf738 P P 7208 6176 2025.02.08 06:19:13.450 2025.02.08 06:19:20.658 2025.02.08 05:17:32.225 2025.02.08 05:17:38.401
27 4.0.6.3181 2025.02.01 00b64 P P 6072 6333 2025.02.04 06:32:44.325 2025.02.04 06:32:50.397 2025.02.04 05:30:58.199 2025.02.04 05:31:04.532
28 4.0.6.3180 2025.01.27 2edb8 P P 6012 6196 2025.01.28 06:15:49.527 2025.01.28 06:15:55.539 2025.01.28 05:14:47.561 2025.01.28 05:14:53.757
29 4.0.6.3179 2025.01.24 008d4 P P 7151 6161 2025.01.25 04:06:06.877 2025.01.25 04:06:14.028 2025.01.25 03:05:02.405 2025.01.25 03:05:08.566
30 4.0.6.3178 2025.01.20 ec94d P P 6085 6221 2025.01.24 06:16:33.113 2025.01.24 06:16:39.198 2025.01.24 05:15:19.132 2025.01.24 05:15:25.353
31 4.0.6.3176 2025.01.16 79cc1 P P 7056 6197 2025.01.20 06:15:19.838 2025.01.20 06:15:26.894 2025.01.20 05:14:10.826 2025.01.20 05:14:17.023
32 4.0.6.3175 2025.01.15 91361 P P 6052 6148 2025.01.16 06:19:08.544 2025.01.16 06:19:14.596 2025.01.16 05:17:36.246 2025.01.16 05:17:42.394
33 4.0.6.3174 2024.12.23 ffd39 P P 6074 7614 2025.01.15 06:12:38.976 2025.01.15 06:12:45.050 2025.01.15 05:11:04.193 2025.01.15 05:11:11.807
34 4.0.6.3173 2024.12.19 60b32 P P 6686 6481 2024.12.21 17:12:26.152 2024.12.21 17:12:32.838 2024.12.21 16:10:41.266 2024.12.21 16:10:47.747
35 4.0.6.3172 2024.12.11 33f5d P P 6013 6312 2024.12.16 06:14:41.211 2024.12.16 06:14:47.224 2024.12.16 05:13:24.643 2024.12.16 05:13:30.955

Elapsed time, ms. Chart for last 35 runs:

Last commits information (all timestamps in UTC):