Diese Seite wurde maschinell übersetzt. Lesen Sie das englische Original. English

IBSurgeon-Bibliothek

Wie man den Firebird-Server zum Absturz bringt

Manchmal ist es notwendig, die Firebird-Server-Engine zum Absturz zu bringen, um eine Dump-Datei zu erstellen oder die Zuverlässigkeit Ihres Backup-/Replikationsschemas zu überprüfen, oder zu Debugging-Zwecken.

Um den Absturz unter Windows auszulösen, können Sie die folgende UDF verwenden: badudf.dll.7z

Laden Sie sie herunter, legen Sie sie in den UDF-Ordner und erstellen Sie eine .bat-Datei mit folgendem Inhalt:

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

Weisen Sie im Skript der Umgebungsvariable fbc den Pfad zum Firebird-Ordner zu, zum Beispiel

c:\Firebird25.in oder C:\Firebird30

und Ihren tatsächlichen Superuser-Login und Ihr Passwort (SYSDBA/masterkey ist die Standardeinstellung) den Variablen usr und psw zu.

Das Skript erstellt die temporäre Datenbank, registriert die UDF darin und führt die “Killer-Abfrage” aus, danach löscht es die Datenbank.

Das Ergebnis wird ein Firebird-Absturz sein, und wenn Sie die Windows-Fehlerberichterstattung richtig eingerichtet haben, erhalten Sie einen Dump des firebird.exe-Prozesses.

Bitte registrieren Sie BadUDF.dll nicht in der Produktionsdatenbank!

Löschen Sie sie außerdem nach dem Experiment aus dem UDF-Ordner.