Danke für die schnelle Antwort. Ich habe nun die Formularvariable lokal deklariert, wie von Dir vorgeschlagen. Der Fehler beim Create und wird nicht vom Programm erzeugt, sondern es kommt ein kommentarloses SIGSEGV vom Betriebssystem. Daher funktioniert das abfangen mit try auch nicht. Create und destroy sind im Formular wie folgt deklariert:
Delphi-Quellcode:
public
{ public declarations }
constructor Create (AOwner : TComponent ; AConnection : TMyConnection;
AUser: TMyUser) ; reintroduce ;
destructor destroy; override;
Destroy deshalb, weil die Transactions eine abgeleitete Klasse von TSQLTransaction sind und zur Laufzeit erzeugt (create des Formulars) werden. Das war nötig, weil bei Lazarus die originale Transaction buggy ist und ein Speicherleck hinterlässt, wenn nicht CloseTrans explizit aufgerufen wird. Bin noch immer ratlos. Wie kann ich herausbekommen, ob Speicher irgendwo nicht wieder freigegeben wird?