[Erledigt] Bug in TSaveDialog

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

[Erledigt] Bug in TSaveDialog

Beitrag von Michl »

Hallo Allerseits,

es ist zum Mäuse melken, nach nun zwei Stunden habe ich endlich den Verursacher meines Fehlers gefunden, den TSaveDialog :evil: . Mein Programm läuft ganz normal weiter, erst wenn ich mein Programm schließe, stürzt der Debugger ab (manchmal auch die IDE, sodaß Lazarus nur noch über den Taskmanager zu beenden geht).

Konnte nach einigem Probieren ein Minimalbsp erstellen, was den Debuggerabsturz auslöst:

- Leere Form
- Button und TSaveDialog auf die Form gezogen

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveDialog1.FileName:='Sicherung.dat';
  if SaveDialog1.Execute then
    Caption:='Speichern unter: '+SaveDialog1.FileName;
end;
Wichtig dabei ist, keine Datei im Verzeichnis zu wählen, sondern nur auf "Speichern" klicken!

Ich nutze zur Zeit: Lazarus 1.1 r42453 FPC 2.7.1 i386-win32-win32/win64

Kann jemand das Verhalten bestätigen, bevor ich den Bug-Tracker bemühe?!

Google ergab diesen Fehler http://bugs.freepascal.org/view.php?id=23117, ist ja als gelöst in 2.7.1 markiert. Da TSaveDialog von TOpenDialog abgeleitet ist, ist das evtl. der gleiche Bug???

[Edit]Anbei noch der Fehler

[Edit]Habs eben noch mit Lazarus 1.0.10 probiert, das Gleiche...
Dateianhänge
Fehler.jpg
Fehler.jpg (26.6 KiB) 2697 mal betrachtet
Zuletzt geändert von Michl am Fr 13. Sep 2013, 21:29, insgesamt 2-mal geändert.

Code: Alles auswählen

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

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug in TSaveDialog

Beitrag von wp_xyz »

Richtig. Laz 1.1 (42538)/fpc 2.7.1 und 2.6.2 zeigen den von dir geschilderten Fehler.
Zuletzt geändert von wp_xyz am Do 12. Sep 2013, 23:00, insgesamt 1-mal geändert.

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

Re: Bug in TSaveDialog

Beitrag von Michl »

Danke für die Info, welches Betriebssystem nutzt du?!

Code: Alles auswählen

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

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug in TSaveDialog

Beitrag von wp_xyz »

Win 7 / 64-Bit, aber Lazarus ist 32 Bit

[EDIT]
In einer virtuellen Maschine habe ich noch ein älteres Laz 1.1 (rev. 39972) mit fpc 2.6.0. Da tritt der Fehler nicht auf.
Zuletzt geändert von wp_xyz am Do 12. Sep 2013, 23:13, insgesamt 2-mal geändert.

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

Re: Bug in TSaveDialog

Beitrag von Michl »

... so wie ich. Dann wäre es nur noch interessant, ob ein Nutzer eines anderen Betriebssystems auch diesen Fehler hat. Werde morgen mal den Bug-Eintrag machen...

Code: Alles auswählen

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

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Bug in TSaveDialog

Beitrag von hde »

Sorry, kann den Fehler nicht bestätigen,
Dein Beispiel funzt einandfrei im Debugger.

Lazarus 1.1 - SVN 40524 FBC 2.7.1
Windows XP 32bit


Lazarus 1.1 - SVN 40369 FBC 2.7.1
Windows 7 64bit

hde

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

Re: Bug in TSaveDialog

Beitrag von Michl »

Genau das ist es ja. Habe eine ganze Weile gebraucht, um den Fehler möglichst eindeutig reproduzieren zu können. Er tritt nicht immer auf, nur wenn ich wie oben geschrieben vorgehe, tritt er bei mir eigentlich immer auf. Wie gesagt, getestet auf 2 Computern mit unterschiedlichen FPC-Versionen, werd das ganze jetzt noch mal auf meinem KlappPC testen...

[Edit] eben getestet unter Lazarus 1.1 r42244 FPC 2.7.1 i386-win32-win32/win64 -> kein Absturz :evil: Und ich dachte, der Fehler wäre eindeutig lokalisiert :cry:
Zuletzt geändert von Michl am Do 12. Sep 2013, 23:31, insgesamt 1-mal geändert.

Code: Alles auswählen

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

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Bug in TSaveDialog

Beitrag von hde »

Michl hat geschrieben: Er tritt nicht immer auf, nur wenn ich wie oben geschrieben vorgehe, tritt er bei mir eigentlich immer auf.


Ich hab ich strikt an deine Anweisungen gehalten und mehrfach getestet: Bei mir kein Fehler aug beiden Versionen

hde

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug in TSaveDialog

Beitrag von wp_xyz »

Das Meldungsfenster, dass der Debugger abgestürzt ist, war bei mir einmal von Lazarus überdeckt, ich hab's erst gesehen, als ich Lazarus minimiert habe.

Mit dem 2.7.1er fpc erhält das Debugger-Fenster noch den Hinweis:

While executing the command:
"TGDBMIDebuggerInstruction: "-file-exec-and-symbols ", "
gdb reported:
"&"../../gdb-7.2/gdb/printcmd.c:1916: internal-error: clear_dangling_display_expressions: Assertion `objfile->pspace == solib->pspace' failed.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable.""

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Bug in TSaveDialog

Beitrag von hde »

keine Fehlfunktion bei CT Lazarus 1.1 SVN 40461 CT fpc 2.7.1 unter Windows 7 64 bit (Lazarus 32bit)

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Bug in TSaveDialog

Beitrag von hde »

auch keine Fehlfunktion bei CT Lazarus 1.1 SVN 40461 CT fpc 2.7.1 unter Windows 7 64 bit und Lazarus 64bit

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

Re: Bug in TSaveDialog

Beitrag von Michl »

So, nun habe ich mich noch an den Rechner meiner besseren Hälfte gesetzt. Der hat noch folgende Antik-Version drauf: Lazarus 1.0.4 r39422 FPC 2.6.0 i386-win32-win32/win64

Hier stürzt der Debugger auch ab.

Absturz auch bei Lazarus 1.0.10 r41613 FPC 2.6.2 i386-win32-win32/win64.

[Edit] Habe jetzt einen Eintrag im Bug-Tracker gemacht http://bugs.freepascal.org/view.php?id=25012

Code: Alles auswählen

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

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug in TSaveDialog

Beitrag von wp_xyz »

Auf meinem Bürorechner mit Win32 und Laz1.1 (41910) / fpc 2.6.2, Laz 1.0.12 (42478) / fpc 2.6.2 und Laz 1.1 (42538) / fpc 2.7.1 stürzt der Debugger bei KEINER Version ab.

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

Re: Bug in TSaveDialog

Beitrag von Michl »

Dann ist das evtl. ein Konflikt mit einer anderen Software oder Rechnerarchitektur, kann das aber beim besten Willen nirgends dran festmachen :( ?!

Code: Alles auswählen

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

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Bug in TSaveDialog

Beitrag von Scotty »

Normalerweise gibt "Speichern" ohne eine Auswahl keinen Modalwert zurück und schließt das Fenster nicht. (Der Button wird allerdings nicht ausgegraut.) Ich habe es mit Lazarus 1.0.10 r41613 FPC 2.6.2 i386-win32-win32/win64 ausprobiert, meine mich aber zu erinnern, dass es unter Linux genauso funktioniert.
Den Debuggerfehler bekomme ich allerdings auch dann, wenn ich nur Abbrechen klicke. Wobei der Debugger in letzter Zeit bei vielen Gelegenheiten abstürzt, z.B. beim Inspizieren von Klassen.

Antworten