AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TList.Count führt zu SIGSEGV Fehler

Ein Thema von Noobmaster · begonnen am 13. Mai 2012 · letzter Beitrag vom 14. Mai 2012
Antwort Antwort
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#1

TList.Count führt zu SIGSEGV Fehler

  Alt 13. Mai 2012, 17:36
Delphi-Version: 5
Hallo,

mein Programm bricht ab und es öffnet sich ein Assemblerfenster:

CLASSES_TLIST_$__GETCOUNT$$LONGINT
0042D2C3 8b4008 mov 0x8(%eax),%eax

Die für mich kryptische 2.Zeile ist hierbei mit einem grünen Pfeil gekennzeichnet, also schließe ich daraus, dass an dieser Stelle das Programm vom Debugger angehalten wird. Zusätzlich gibt mein Lazarus die Meldung eines SIGSEGV-Fehlers aus.

Kommentiere ich die Zeile
AnzWoerterInListe := pWortquelle.mWurzel[Wortlaenge].mWoerter[IndexBuchstabe].Count; in meinem Projekt aus, tritt dieser Fehler nicht mehr auf.

pWortquelle.mWurzel[Wortlaenge].mWoerter[IndexBuchstabe] ist <> nil.

Weitere Informationen bei Nachfrage. Vielen vielen Dank schonmal für die Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#2

AW: TList.Count führt zu SIGSEGV Fehler

  Alt 13. Mai 2012, 17:58
pWortquelle.mWurzel[Wortlaenge].mWoerter[IndexBuchstabe] ist <> nil.
und die so referenzierten Objekt-Instanzen sind auch noch gültig?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#3

AW: TList.Count führt zu SIGSEGV Fehler

  Alt 13. Mai 2012, 18:04
Wieso sollen sie nicht gültig sein, bzw. wie überprüfe ich die Gültigkeit?
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#4

AW: TList.Count führt zu SIGSEGV Fehler

  Alt 13. Mai 2012, 18:11
Zitat:
Wieso sollen sie nicht gültig sein
Ungültig heißt hier wohl, dass der Zeiger nicht nil ist, aber an der Adresse kein Objekt mehr liegt - z.B. weil du es irgendwo freigibst, aber dann die Referenz(en) nicht auf nil setzt.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#5

AW: TList.Count führt zu SIGSEGV Fehler

  Alt 13. Mai 2012, 18:14
Bei den Objekten handelt es sich um Instanzen von TList.
Der Destruktor der Objekte wurde an dieser Stelle noch nicht benutzt.
Meines Wissens nach müssten die Objekte gültig sein.
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#6

Präzisierung des Problems

  Alt 13. Mai 2012, 18:24
Also genau genommen bin ich mir nicht 100% sicher, ob der Fehler an dieser Stelle liegt, aber da diese Zeile die einzige ist, in der ich die Count-Funktion der Liste benutze, gehe ich davon aus. Wenn ich das Programm in Einzelschritten durchlaufen lasse, komme ich nicht zu dem Fehler (die Funktion wird in einer Schleife aufgerufen, die sich so oft wiederholt, dass ich sie nicht komplett in Einzelschritten durchlaufen lassen kann).
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Präzisierung des Problems

  Alt 13. Mai 2012, 19:10
die Funktion wird in einer Schleife aufgerufen, die sich so oft wiederholt, dass ich sie nicht komplett in Einzelschritten durchlaufen lassen kann).
Zuerst einen Haltepunkt setzen, in den Eigenschaften des Haltepunkts anhalten deaktivieren und bei Auswerten die Schleifenvariable eintragen. Dann schauen wann die Exception auftritt.
Wieder einen Haltepunkt setzen, diesmal mit anhalten, aber mit der Bedingung auf diesen Durchlauf (wenn es denn immer der selbe ist, also z.B. i = 133). Dann landest du genau dann dort, wenn es knallt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#8

AW: TList.Count führt zu SIGSEGV Fehler

  Alt 13. Mai 2012, 20:31
Ist Range-Checking eingeschaltet?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#9

AW: TList.Count führt zu SIGSEGV Fehler

  Alt 14. Mai 2012, 10:47
Ist Range-Checking eingeschaltet?
Was ist das?

Also ich habe jetzt die Werte gefunden, wann AnzWoerterInListe := pWortquelle.mWurzel[Wortlaenge].mWoerter[IndexBuchstabe].Count; zu dem Fehler führt.
IndexBuchstabe muss, damit der Fehler auftritt, < 1 und > 26 sein.

Delphi-Quellcode:
               if IndexBuchstabe <= 0 then
               begin
                  x := x;
               end;
               if IndexBuchstabe > 26 then
               begin
                  y := y;
               end;
               AnzWoerterInListe := pWortquelle.mWurzel[Wortlaenge].mWoerter[IndexBuchstabe].Count;
Mit den if-Abfragen habe ich herausgefunden, dass dies aber nie der Fall ist.
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#10

Lösung

  Alt 14. Mai 2012, 10:57
Der Fehler war, dass Wortlaenge = 0 war.
Danke für die Hilfe!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz