[Lazarus] about raised exception class 'External: SIGSEGV'

Luca Olivetti luca at wetron.es
Mon Apr 14 15:58:14 CEST 2014

El 14/04/14 12:49, FreeMan ha escrit:
> Hello,
> I get this errors some time, I can not handle this error so I don't know
> why raised.
> Project myproject raised exception class 'External: SIGSEGV'. -> Ok and
> continue to run application

It's an access to unallocated memory or trying to use a class instance
that doesn't exist (i.e. it is nil).
Since I don't know your program, maybe one of the FieldByName call is
returning nil (i.e., a field with that name doesn't exist, so either the
IsNull or the AsInteger would generate a SIGSEV:

> if not QUE_1.FieldByName('UNQ_ID').IsNull and
> (QUE_1.FieldByName('UNQ_ID').AsInteger>=0)then
> Unq_id := QUE_1.FieldByName('UNQ_ID').AsInteger
> else Unq_id := -1;
> QUE_1.Close;
> QUE_1.Open;
> if Unq_id<>-1then QUE_1.Locate('UNQ_ID', Unq_id, []);
> if not QUE_2.FieldByName('UNQ_ID').IsNull and
> (QUE_2.FieldByName('UNQ_ID').AsInteger>=0)then
> Unq_id := QUE_2.FieldByName('UNQ_ID').AsInteger
> else Unq_id := -1;

> try-except not handle this error. 

No currently it doesn't :-(
Note that in most cases when hitting such an error the only sensible
option would be to terminate the program, but I'd like to intercept the
exception and log it to a file before terminating the program, so I can
do a post-mortem and see where the SIGSEV occurred.

Luca Olivetti
Wetron Automation Technology http://www.wetron.es
Tel. +34 935883004  Fax +34 935883007

More information about the Lazarus mailing list