zmsql segfault bei Programmende

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

zmsql segfault bei Programmende

Beitragvon guenterlause » 22. Apr 2018, 11:08 zmsql segfault bei Programmende

Liebes Forum!
Ich komme mit einem Problem nicht weiter und kann ein paar weitere Augen gebrauchen:

Ich möchte unter Linux mit Lazarus 1.8.2 und zmsql eine Datenbank erstellen. Mein kleines Programm im Anhang segfaultet beim Schließen, wenn Ordersfield1.size>=25.
Das Programm:
  • "verbindet" sich mit dem aktuellen Verzeichnis.
  • Füllt auf Knopfdruck die Datenbank mit 100 leeren Strings in das einzige Fehld Ordersfield1
  • crashed beim Beenden, mutmaßlich beim freigeben des Speichers, wenn ich den Disassembler richtig deute.

Die Demoprogramme von zmsql funktionieren bei mir und ich sehe keinen relevanten Unterschied zu meinem Ansatz. Hat jemand eine Idee?

Eine weitere Frage schließt sich an: Wenn der Segfault auftritt, zeigt Lazarus mir lediglich ein Disassemblat meines Programms. Vermutlich weil der Fehler im Package auftritt und Lazrarus keinen Zugriff auf den Quelltext hat. Wie kann ich Packages im Quelltext debuggen?

Vielen Dank!
guenterlause
 
Beiträge: 6
Registriert: 22. Apr 2018, 10:41

Beitragvon wp_xyz » 22. Apr 2018, 15:19 Re: zmsql segfault bei Programmende

Lazarus meckert über eine nicht vorhandene Datei "text.txt" beim Laden des Projekts, keine Ahnung, ob das wesentlich ist. Kannst du die nachliefern?

Welche Version von ZMSQL verwendest du? Es gab da vor kurzem einige Änderungen. Die Version im OPM bzw. auf CCR (https://sourceforge.net/p/lazarus-ccr/s ... nts/zmsql/) ist aktuell.
wp_xyz
 
Beiträge: 2459
Registriert: 8. Apr 2011, 08:01

Beitragvon guenterlause » 22. Apr 2018, 20:37 Re: zmsql segfault bei Programmende

text.txt enthielt nur copy-paste-notizen. Sie ist nicht wesentlich.

Ich habe ZMSQL vor zwei Tagen mittels des OnlinePackageMangers (OPM?) installiert. Die Version ist 0.1.20.1.
guenterlause
 
Beiträge: 6
Registriert: 22. Apr 2018, 10:41

Beitragvon Michl » 22. Apr 2018, 20:49 Re: zmsql segfault bei Programmende

guenterlause hat geschrieben: Wie kann ich Packages im Quelltext debuggen?
Du musst das Package mit Debuginfo erstellen.

Also:
- unter Menu -> Package -> letzte Packages -> dein Package auswählen
- im nun geöffneten Packageeditor unter Einstellungen -> Compilereinstellungen -> Debuggen -> Debugging-Info-Typ den gewünschten auswählen (bei mir funktioniert Dwarf2 am besten)
- Package neu kompilieren und, wenn es ein Designpackage ist, neu installieren
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2241
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon wp_xyz » 22. Apr 2018, 21:42 Re: zmsql segfault bei Programmende

Wenn ich das Package unter Linux öffne, sind die janSQL* Dateien durchgestrichen. Im Dateisystem liegen sie in Kleinschreibung vor, aber im Projekt sind sie mit groß geschriebenem "SQL" eingetragen. Ich habe die fraglichen Dateien aus dem Package gelöscht und in korrekter Schreibweise neu eingetragen --> ich habe keinen Fehler beim Beenden des Programms (kann aber nicht sagen, ob das nun an der Änderung liegt, oder auf meinem System sonst auch funktionieren würde, weil ich deine Demo vor der Änderung nicht ausprobiert habe).

Probier's einfach mal aus. Die geänderten Package-Dateien habe ich eben auf CCR-svn hochgeladen.

Übrigens, um Packages zu debuggen, reicht es, in den Projekt-Optionen unter "Hinzufügungen und Beeinflussungen" (welch ein Name!) folgendes zu tun: "Gespeichert in der Projektsitzung" klicken > "Hinzufügen" > "Benutzerdefinierte Option" > in die neu erscheinende Zeile "Custom" die Option -gw2 eintragen > "OK". Dann werden Projekt und benötigte Packages mit Dwarf2-Debugger-Information compiliert, und man kommt mit dem Debugger auch in die Units von Packages.
wp_xyz
 
Beiträge: 2459
Registriert: 8. Apr 2011, 08:01

Beitragvon af0815 » 23. Apr 2018, 06:15 Re: zmsql segfault bei Programmende

Ich verwende generell beim Programmieren (nicht dem fertigen Code) die aktivierten Debugeinstellungen
Debug.JPG

Damit sieht man etliche Fehler vorher. Hast du diese EInstellungen aktiv ?

Andreas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3362
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon guenterlause » 23. Apr 2018, 20:58 Re: zmsql segfault bei Programmende

Bevor ich mein Leid weiter klage: Danke für die bisherige Hilfe.

wp_xyz hat geschrieben:Wenn ich das Package unter Linux öffne, sind die janSQL* Dateien durchgestrichen. Im Dateisystem liegen sie in Kleinschreibung vor, aber im Projekt sind sie mit groß geschriebenem "SQL" eingetragen. Ich habe die fraglichen Dateien aus dem Package gelöscht und in korrekter Schreibweise neu eingetragen --> ich habe keinen Fehler beim Beenden des Programms (kann aber nicht sagen, ob das nun an der Änderung liegt, oder auf meinem System sonst auch funktionieren würde, weil ich deine Demo vor der Änderung nicht ausprobiert habe).


Das habe ich versucht, es Segfaultet bei mir noch.

wp_xyz hat geschrieben:Übrigens, um Packages zu debuggen, reicht es, in den Projekt-Optionen unter "Hinzufügungen und Beeinflussungen" (welch ein Name!) folgendes zu tun: "Gespeichert in der Projektsitzung" klicken > "Hinzufügen" > "Benutzerdefinierte Option" > in die neu erscheinende Zeile "Custom" die Option -gw2 eintragen > "OK". Dann werden Projekt und benötigte Packages mit Dwarf2-Debugger-Information compiliert, und man kommt mit dem Debugger auch in die Units von Packages.

Das habe ich auch versucht und das Projekt neu kompiliert. Beim Segfault lande ich immer noch im Disassembler.

Beste Grüße


af0815 hat geschrieben:Ich verwende generell beim Programmieren (nicht dem fertigen Code) die aktivierten Debugeinstellungen
Hast du diese EInstellungen aktiv ?
Andreas


Hatte ich nicht. Ich habe jetzt Release und Debug-Modi erstellen lassen und die Einstellungen wurden entsprechend gesetzt. Ich habe dann den Tipp von wp_xyz modifiziert und bei Debugging-Info-Typ "Dwarf2 (-gw2) ausgewählt und die Option -gw2 in der Zeile Custom wieder entfernt, denn die beiden Einstellungen erscheinen mir redundant. Stimmt das?

Sehr schön: Weder im Modus "Debug", noch im Modus "Release" segfaultet mein Demoprogramm.
Weniger schön: Mein eigentliches Programm segfaultet nur im Modus "Release".

Ich habe daher die Felddefinitionen der Datenbank von meinem eigentlichen Programm in das Demoprogramm übernommen. Und auch hier: Segfault bei Release, alles schön bei Debug.
Was kann das sein? Wie könnte ich vorgehen? Im Anhang ist das modifizierte Demoprogramm.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
guenterlause
 
Beiträge: 6
Registriert: 22. Apr 2018, 10:41

Beitragvon fliegermichl » 24. Apr 2018, 08:12 Re: zmsql segfault bei Programmende

Das ist interessant. Ich kann das Problem exakt nachvollziehen. Im Debugmodus alles gut. Release Segfault.
In Delphi gab es früher "Suchen" -> "Laufzeitfehler". Da konnte man die Fehleradresse eingeben und Delphi hat die entsprechende Stelle im Quellcode gefunden.
Das würde hier helfen.
fliegermichl
 
Beiträge: 192
Registriert: 9. Jun 2011, 08:42

Beitragvon af0815 » 24. Apr 2018, 12:05 Re: zmsql segfault bei Programmende

Beispiel im Debugmodus und Relasemodus laufen lassen
Debug -> Ok, Heaptrace sagt auch Ok
Release -> Ok, keine Meldung

Lazarus 1.9.0 r57511 FPC 3.1.1 i386-win32-win32/win64
ZMSQL aus dem OPM

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3362
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon guenterlause » 26. Apr 2018, 08:57 Re: zmsql segfault bei Programmende

fliegermichl hat geschrieben:Das ist interessant. Ich kann das Problem exakt nachvollziehen. Im Debugmodus alles gut. Release Segfault.


Welche Version und Platform benutzt du?

af0815 hat geschrieben:Lazarus 1.9.0 r57511 FPC 3.1.1 i386-win32-win32/win64
ZMSQL aus dem OPM


Könntest du sicherstellen, dass mein Demoprogramm auch bei größeren Datenbanken bei dir stabil läuft, indem du in Unit1.pas in zeile 55 den Endwert der For-Schleife erhöhst?
Ich benutze lazarus 1.8.2 mit fpc 3.0.4 unter linux 64bit. Das ist ja auf allen Ebenen unterschiedlich. Ich überlege, wie ich von hier weiter vorgehe: lazarus 1.9 aus dem SVN oder windows in der vm. Gibt es von Lazarus nightly-Builds oder muss ich das svn auschecken und selbst kompilieren?

Beste Grüße
guenterlause
 
Beiträge: 6
Registriert: 22. Apr 2018, 10:41

Beitragvon af0815 » 26. Apr 2018, 10:31 Re: zmsql segfault bei Programmende

guenterlause hat geschrieben:Ich benutze lazarus 1.8.2 mit fpc 3.0.4 unter linux 64bit. Das ist ja auf allen Ebenen unterschiedlich. Ich überlege, wie ich von hier weiter vorgehe: lazarus 1.9 aus dem SVN oder windows in der vm. Gibt es von Lazarus nightly-Builds oder muss ich das svn auschecken und selbst kompilieren?


mittels FpcupDeluxe habe ich verschiedene Versionen auf der Platte (ohne VM).

BTW;
Lazarus 1.8.3 r57505M FPC 3.0.5 i386-win32-win32/win64
ZMSQL aus dem OPM

Debug -> Ok, Heaptrace sagt auch Ok
Release -> Ok, keine Meldung
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3362
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon guenterlause » 26. Apr 2018, 21:40 Re: zmsql segfault bei Programmende

af0815 hat geschrieben:
guenterlause hat geschrieben:mittels FpcupDeluxe habe ich verschiedene Versionen auf der Platte (ohne VM).


FPCupDeluxe ist ja der Wahnsinn! Das kannte ich noch nicht. Danke!

Damit sieht es aber leider nicht anders aus:
Lazarus und FPC jeweils trunk unter Linux gebaut:

  • Linux Target Debug: nichts
  • Linux Target Release: segfault
  • Window 7 in VM mit Win64 Target Release: nichts
  • Windows 10 in VM mit Win64 Target Release: segfault
  • Linux Wine mit Win64 Target Release: nichts

Es scheint also weder an Version von Lazarus und FPC noch an der Platform zu liegen. Nun weiß ich nicht weiter. Noch Ideen?
guenterlause
 
Beiträge: 6
Registriert: 22. Apr 2018, 10:41

Beitragvon wp_xyz » 27. Apr 2018, 00:01 Re: zmsql segfault bei Programmende

Jetzt sehe ich es auch: Win 10 64-bit (ohne VM) / Laz 1.8.2 64-bit, Exception beim Programm-Ende im Release-Mode, auch im Debug-Mode aber nur wenn HeapTrc aus ist. Ohne Debugger keine Exception. Es reicht, das Programm soweit zusammenzustreichen, dass statt die 10000 Records zu schreiben, nur Append und Post aufgerufen werden.

Vorher hatte ich in meinem Standard-32-Bit-Lazarus gearbeitet, da gibt es die Exception nicht. Ist bei dir jemand der Fehler bei 32-Bit aufgetreten?
wp_xyz
 
Beiträge: 2459
Registriert: 8. Apr 2011, 08:01

Beitragvon guenterlause » 28. Apr 2018, 19:52 Re: zmsql segfault bei Programmende

Ich habe das Programm bei mir mal als 32bit Binary für Linux und Windows kompiliert: Weder im Release- noch im Debug-Modus kommt es damit unter Linux, Wine, Win7 oder Win10 zum Segfault. Das ist schon einmal ein gutes Teilergebnis: So könnte ich mein eigentliches Vorhaben weiter bearbeiten. Unbefriedigend jedoch, dass ich somit auf 32bit festgenagelt bin.
guenterlause
 
Beiträge: 6
Registriert: 22. Apr 2018, 10:41

Beitragvon wp_xyz » 28. Apr 2018, 20:42 Re: zmsql segfault bei Programmende

guenterlause hat geschrieben:Unbefriedigend jedoch, dass ich somit auf 32bit festgenagelt bin.

Was ist das Problem damit? Hast du so riesige Datenmengen?

Meines Wissens macht(e) der Debugger bei 64-Bit immer wieder Probleme, ob das noch aktuell ist, weiß ich nicht, weil ich kaum mit 64-Bit arbeite. Das würde sich mit der Beobachtung decken, dass der Fehler nicht auftritt, wenn das Programm ohne Debugger, außerhalb der IDE, läuft. Ansonsten müsste man sich auf die Fehlersuche machen...
wp_xyz
 
Beiträge: 2459
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried