Hello, this is my first post and I hope this is the correct list for my question.
I'm getting a segmentation fault ('violaciĆ³n de segmento' in spanish) when running the code from below on a Linux 64-bit machine (OpenSuse 10.2 64-bits). I'm using FPC 2.2.5, so perhaps the error is already known, but I did not find any solution in the web. I tested the code on Windows 32 bits and Linux 32 bits too, but there everything seems ok. The example is about opening a Firebird connection in a thread. When there is a Firebird exception inside this connection, the application terminates with the segmentation fault. Does anyone know about this error, or can anyone give me a hint, where to look for a solution? This is the example code: <code> program fbthreadtest; {$IFDEF FPC} {$MODE DELPHI}{$H+} {$ENDIF} {$APPTYPE CONSOLE} uses {$IFDEF UNIX} cthreads, cwstring, {$ENDIF} Classes, IBConnection, sqldb; type TFBThread = class(TThread) private protected procedure Execute; override; public constructor Create; end; constructor TFBThread.Create; begin inherited Create(True); FreeOnTerminate := False; Resume; end; procedure TFBThread.Execute; var db: TIBConnection; tr: TSQLTransaction; q: TSQLQuery; begin db := TIBConnection.Create(nil); try db.DatabaseName := 'localhost:/home/data/Database/ssstst.gdb'; db.LoginPrompt := False; db.HostName := ''; db.UserName := 'SYSDBA'; db.Password := 'masterkey'; db.Connected := TRUE; tr := TSQLTransaction.Create(nil); try tr.DataBase := db; tr.Action := caCommit; tr.Params.Clear; tr.Params.Add('isc_tpb_read_committed'); tr.Params.Add('isc_tpb_rec_version'); tr.Params.Add('isc_tpb_nowait'); db.Transaction := tr; tr.Active := True; q := TSQLQuery.Create(nil); try q.Database := db; q.Transaction := tr; try Writeln('select...'); // the following line raises an exception because rdb$databases doesn't exist. q.SQL.Text := 'select count(*) from rdb$databases'; q.Prepare; except Writeln('...exception'); end; finally q.Free; end; finally tr.Commit; tr.Free; end; finally db.Connected := False; db.Free; end; end; begin with TFBThread.Create do begin WaitFor; Free; end; end. </code> Thanks, Stefan _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel