Deze pagina is automatisch vertaald. Lees het Engelse origineel. English

IBSurgeon-bibliotheek

Hoe de Firebird-server te laten crashen

Soms is het nodig om de Firebird-serverengine te laten crashen, om een dumpbestand te maken of de betrouwbaarheid van uw back-up/replicatieschema te controleren, of voor foutopsporingsdoeleinden.

Om de crash op Windows te veroorzaken, kunt u de volgende UDF gebruiken: badudf.dll.7z

Download het, plaats het in de UDF-map en maak een .bat-bestand met de volgende inhoud:

Code
@echo off
setlocal enabledelayedexpansion enableextensions

set fbc=C:\HQBird25.in
set dbnm=%~dp0tmptest.fdb.tmp
set usr=SYSDBA
set psw=masterkey

del  2>nul
echo create database 'localhost:!dbnm!' user '!usr!' password '!psw!'; | "!fbc!\isql.exe" -q -z

(
    echo set echo on;
    echo declare external function crashme
    echo returns int by value
    echo entry_point 'crashme' module_name 'badudf';
    echo commit;

    echo show function;

    echo select crashme(^) from rdb$database;
) > %~dp0tmptest.sql.tmp

"!fbc!\isql.exe" ^
    localhost:!dbnm! ^
    -q -i %~dp0tmptest.sql.tmp ^
    -user !usr! -pas !psw!
del !dbnm!
del %~dp0tmptest.sql.tmp

Wijs in het script aan de omgevingsvariabele fbc het pad naar de Firebird-map toe, bijvoorbeeld

c:\Firebird25.in of C:\Firebird30

en uw werkelijke superuser-login en wachtwoord (SYSDBA/masterkey is standaard) aan de variabelen usr en psw.

Het script maakt de tijdelijke database aan, registreert de UDF erin en voert de “killer-query” uit, waarna het de database verwijdert.

Het resultaat is een crash van Firebird en, als Windows Error Reporting correct is ingesteld, een dump van het firebird.exe-proces.

Registreer BadUDF.dll alstublieft niet in de productiedatabase!

Verwijder het ook na het experiment uit de UDF-map.