external:sigsegv beim debuggen

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Entertainmentberg
Beiträge: 46
Registriert: So 27. Jan 2013, 22:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: external:sigsegv beim debuggen

Beitrag von Entertainmentberg »

Vermutung: Ist es möglich, dass dieser Fehler auftritt, weil u.U. (was ich nicht annehme in meinem Fall) nicht alle Variablen Werte zugewiesen bekommen haben???

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: external:sigsegv beim debuggen

Beitrag von martin_frb »

Entertainmentberg hat geschrieben:Hier mal die Proceduren/Functionen (nur die Köpfe), bei denen es das Problem gibt:

FUNCTION f_statistik(dat:t_ew_arr;ew_vorjahr:INTEGER):t_daten;
PROCEDURE p_ew_weniger(dat:t_ew_arr);
PROCEDURE p_ew_mehr(dat:t_ew_arr);

WOBEI
t_ew_arr=ARRAY [1..c_max_ew] of t_einwohner;
Ist das noch SigSegV, oder "GDB has crashed", oder dauert sehr lange?

wie gross ist c_max_ew?

ggf http://www.lazarusforum.de/viewtopic.ph ... 578#p58888 ?

ansonsten log file

Entertainmentberg
Beiträge: 46
Registriert: So 27. Jan 2013, 22:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: external:sigsegv beim debuggen

Beitrag von Entertainmentberg »

Hab den Datentyp mal etwas vereinfacht... Und jippie! Es kommt nun sogar ein anderer Fehler: Fast der gleiche Text, nur kommt nun "SIGFPE ausgelöst"... statt "SIGSEGV ausgelöst"...

Vielleicht kann damit wer was anfangen.

P.S. sorry, dass ich die vorige Nachricht 2x reingestellt habe - ich war noch auf der ersten Seite und dachte, mein Beitrag wurde nicht aufgenommen - dabei war der auf der 2. Seite...

Gute Nacht.

Entertainmentberg
Beiträge: 46
Registriert: So 27. Jan 2013, 22:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: external:sigsegv beim debuggen

Beitrag von Entertainmentberg »

Oh - hallo MArtin, sei gegrüßt, danke für die schnelle Reaktion.
Es handelte sich im Normalfall (ungekürzt) um SIGSEGV.

const
c_max_ew = 100000;

Ich probiere es mal mit ner kleineren Zahl aus.

Entertainmentberg
Beiträge: 46
Registriert: So 27. Jan 2013, 22:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: external:sigsegv beim debuggen

Beitrag von Entertainmentberg »

Oha! Du hast Recht!!! Wenn ich das mit 10000 ausprobiere statt 100000, dann tritt der Fehler nicht mehr auf!
Ach herrje... Dann können ja nur wenige Leute in den Städten wohnen... das misfällt mir nun aber sehr... Nun erkenn ich auch den Zusammenhang - ich hab neue Variablen hinzugefügt gehabt - das wurde dann in der Summe wohl zu viel. { t_bereiche kam hinzu und der ist sehr umfangreich}

Hat jmd. ne Idee, wie ich mit größeren Zahlen arbeiten kann??? Also ohne, dass der Fehler auftritt... Sonst muss ich t_einwohner wohl wieder drastisch verkleinern. Das wäre echt schade...

Vielen Dank für die Anregung!
LG

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: external:sigsegv beim debuggen

Beitrag von martin_frb »

Entertainmentberg hat geschrieben:Oh - hallo MArtin, sei gegrüßt, danke für die schnelle Reaktion.
const
c_max_ew = 100000;

Ich glaub das hat nix mit gdb zu tun...

STATISCHES array 100x eintraege sizeof=Z 10, 20 bytes?

also 1MB. So viel Speicher hast du zwar locker. Aber nicht unbedingt auf dem STACK.

statisches Array geht auf den stack.

Das heist auch das es beim Aufruf komplett kopiert wird...

Entertainmentberg
Beiträge: 46
Registriert: So 27. Jan 2013, 22:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: external:sigsegv beim debuggen

Beitrag von Entertainmentberg »

"STATISCHES array 100x eintraege sizeof=Z 10, 20 bytes?
also 1MB. So viel Speicher hast du zwar locker. Aber nicht unbedingt auf dem STACK.
statisches Array geht auf den stack.
Das heist auch das es beim Aufruf komplett kopiert wird..."

Oh - ich muss erstmal die Begriffe recherchieren. Mit "STATISCHES array" bin ich grad etwas überfordert. Stack hab ich schonmal gehört... "sizeof=Z 10, 20 bytes" kann ich grad auch nichts zu sagen... ich schlag das mal nach. oder google... oder so...

Vielen Dank, bis später

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: external:sigsegv beim debuggen

Beitrag von martin_frb »

Stack = lokale variablen, und ruecksprungaddressen (wenn du eine procedure/funktion aufrufst, wo nach ende der funktion weitergemacht wird.

keine Ahnung was die gefault Groesse ist. Gibt nen kompiler switch...

* static array "array [1..n] of"
* dynamic array "array of " und setlength()

dynamisch arrays sind eigentlich pointer, und brauchen daher als lokale variable nur 4/8 bytes

SizeOf wieviel speicher eine structur belegt.

Entertainmentberg
Beiträge: 46
Registriert: So 27. Jan 2013, 22:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: external:sigsegv beim debuggen

Beitrag von Entertainmentberg »

Ich danke erstmal viele Male - da hab ich ja nun zumindest Ansätze, die ich verfolgen kann :-)
Momentan kann ich aus zeitlihen Gründen erstmal nicht direkt weitermachen. Aber ich komm wieder drauf zurück.
Danke

timedrift
Beiträge: 1
Registriert: Mi 8. Mai 2013, 18:20

Re: external:sigsegv beim debuggen

Beitrag von timedrift »

Hallo
bin relativ neu mit lazarus am Programmieren.
Hatte aber auch diese merkwürdige Fehlermeldung in folgenden Programmlisting:

Code: Alles auswählen

var
  Form1: 		TForm1;
   gewinnzahl : 		array of Integer;  
 
procedure TForm1.Button2Click(Sender: TObject);
begin
    gewinnzahl[0] := 1;
    gewinnzahl[1] := 12;
    gewinnzahl[2] := 23;
     gewinnzahl[3] := 34;
      gewinnzahl[4] := 45;
       gewinnzahl[5] := 56;    
Dann habe ich die Länge des array definiert mit

Code: Alles auswählen

 SetLength(gewinnzahl, 6);
somit also

Code: Alles auswählen

procedure TForm1.Button2Click(Sender: TObject);
begin
   SetLength(gewinnzahl, 6);
    gewinnzahl[0] := 1;
    gewinnzahl[1] := 12;
    gewinnzahl[2] := 23;
     gewinnzahl[3] := 34;
      gewinnzahl[4] := 45;
       gewinnzahl[5] := 56;    
und die nervige Fehlermeldung war schlagartig weg.
Vielleicht hilft es ja.
viele Grüße
Timedrift
Zuletzt geändert von Lori am Do 9. Mai 2013, 10:35, insgesamt 1-mal geändert.
Grund: Highlighter

kjer
Beiträge: 6
Registriert: Mi 15. Apr 2015, 10:34

Nochmal: external:sigsegv beim debuggen

Beitrag von kjer »

habe jetzt auch so einen external:sigsegv;
womöglich hab ich nur Brett vor Kopf, vielleicht hat jemand auf die Schnelle eine Idee?
(ganz neue Laz/FPC-Installation, alles von vorher gelöscht)

Situation zum Reproduzieren:

Neues Projekt, mit Laz.1.2.6, FPC 2.6.4 32 bit Win 7 prof 64 bit als Administrator
Button auf form, Komp. BufDataset auf Form


zusätzlicher Suchpfad in Debugger ( für BufDataset1: TBufDataset ):
C:\lazarus\fpc\2.6.4\source\packages\fcl-db\src\base
Fehler tritt mit und ohne diesen Pfad auf;


Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  mem : TMemoryStream;
begin
  mem := TMemoryStream.Create;
  mem.SetSize(111111);   
 
  // auf folg. Zeile Breakpoint oder nicht ergibt: Exception-Klasse: External: SIGSEGV
  BufDataset1.SaveToStream( mem, dfBinary );
 // F7 läuft auch nicht in die Unit von BufDataSet rein, egal ob auf vorstehender Zeile
 // Breakpoint oder nicht oder in SaveToStream auf dem ersten Befehl Breakpoint oder nicht
 // BufDataSet leer
end;

//Für Lösungsidee wär ich echt dankbar, Dank im Voraus
//

Benutzeravatar
theo
Beiträge: 10860
Registriert: Mo 11. Sep 2006, 19:01

Re: external:sigsegv beim debuggen

Beitrag von theo »

Na gut, wenn sonst keiner was sagt...

Erstens: Dieser Thread ist kein guter Ort für diese Frage. "Sigsegv" bedeutet nicht viel mehr als "Autsch" und sagt über die Gründe nicht viel aus.
Zweitens: Man kann nicht in die FCL reinsteppen, wenn diese nicht mit Debug info gebaut ist.
Drittens: Ich glaube dein Fehler ist möglicherweise die Folge eines anderen Problems. Versuch mal das BufDataSet Active zu setzen, dann siehst du evtl. genaueres.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: external:sigsegv beim debuggen

Beitrag von Michl »

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten