Come far crashare il server Firebird
A volte è necessario mandare in crash il motore del server Firebird, per creare un file di dump o verificare l’affidabilità del proprio schema di backup/replica, o per scopi di debug.
Per provocare il crash su Windows, puoi utilizzare la seguente UDF: badudf.dll.7z
Scaricala, mettila nella cartella UDF e crea un file .bat con il seguente contenuto:
@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
Nello script, assegna alla variabile d’ambiente fbc il percorso della cartella di Firebird, ad esempio
c:\Firebird25.in o C:\Firebird30
e il tuo login e password di superuser effettivi (SYSDBA/masterkey è il default) alle variabili usr e psw.
Lo script creerà il database temporaneo, registrerà la UDF al suo interno ed eseguirà la “query killer”, dopodiché eliminerà il database.
Il risultato sarà il crash di Firebird e, se hai configurato correttamente la Segnalazione errori di Windows, il dump del processo firebird.exe.
Per favore, non registrare BadUDF.dll nel database di produzione!
Inoltre, eliminala dalla cartella UDF dopo l’esperimento.