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:
@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.