Free Pascal 3.2.2-rc1 verfügbar
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
Ja, das mir schon klar. Aber überall eine 0? Nichts allokiert bei nen Programm mit über 10.000 Zeilen Code, zig Formularen und OOP? Unwahrscheinlich.
Ich sag ja nicht, das ich nicht sauber gearbeitet hab aber alles auf 0 sollte nicht sein.
Ich sag ja nicht, das ich nicht sauber gearbeitet hab aber alles auf 0 sollte nicht sein.
Tipp für PostgreSQL: www.pg-forum.de
-
- Beiträge: 832
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Free Pascal 3.2.2-rc1 verfügbar
Kannst du es mal mit einem anderen Programm testen? Zum Beispiel mal explicit ein GetMem ohne zugehöriges FreeMem. Nur um zu schauen, wo das Problem eher liegt.
FPC Compiler Entwickler
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
Moin,
so, gerade das auf meinem Arbeitsrechner (Windows 10) getestet. Dort kann ich das nicht reproduzieren.
FPC 3.2.2-RC1
Das schaut für mich richtig aus. Hier noch mein Testprogramm:
Ich werde es heute Abend noch einmal unter Linux testen... In meinem Testszenario hat sich nur FPC geändert. Alles andere ist gleich geblieben.
cu tb
so, gerade das auf meinem Arbeitsrechner (Windows 10) getestet. Dort kann ich das nicht reproduzieren.
FPC 3.2.0PascalDragon hat geschrieben: ↑So 28. Mär 2021, 16:03Kannst du es mal mit einem anderen Programm testen? Zum Beispiel mal explicit ein GetMem ohne zugehöriges FreeMem. Nur um zu schauen, wo das Problem eher liegt.
Code: Alles auswählen
C:\fpcupdeluxe\projects\Testprogramm>project1.exe
Heap dump by heaptrc unit of C:\fpcupdeluxe\projects\Testprogramm\project1.exe
1 memory blocks allocated : 0/0
0 memory blocks freed : 0/0
1 unfreed memory blocks : 0
True heap size : 98304 (160 used in System startup)
True free heap : 97920
Should be : 97952
Call trace for block $0000000001661B70 size 0
$000000010000551B
$0000000100001605 main, line 7 of project1.lpr
$0000000100001626
$000000010000A120
$00000001000015C0
$00007FFE5F787034
$00007FFE60962651
$506E6F6D6D6F4300
$69466D6172676F72
$293638782873656C
$676F72505C3A433D
$656C6946206D6172
$5C29363878282073
$46206E6F6D6D6F43
$6D6F430073656C69
$72676F72506E6F6D
Code: Alles auswählen
C:\fpcupdeluxe\projects\Testprogramm>project1.exe
Heap dump by heaptrc unit of C:\fpcupdeluxe\projects\Testprogramm\project1.exe
1 memory blocks allocated : 0/0
0 memory blocks freed : 0/0
1 unfreed memory blocks : 0
True heap size : 98304 (160 used in System startup)
True free heap : 97920
Should be : 97952
Call trace for block $0000000001637140 size 0
$00000001000055EB
$0000000100001635 main, line 7 of project1.lpr
$0000000100001656
$000000010000A430
$00000001000015F0
$00007FFE5F787034
$00007FFE6096265
Code: Alles auswählen
program project1;
var
Test: integer;
begin
GetMem(Test);
end.
cu tb
Tipp für PostgreSQL: www.pg-forum.de
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
So, mein Testprogramm unter Linux geht auch, mein eigentliches Programm erzeugt die 0er. Ich habe jetzt die Einstellungen verglichen und das Problem gefunden.
Ist in den Einstellungen unter "Debuggen" die Option "Code für valgrind erzeugen (-gv)" aktiv, dann erscheinen die 0er. Ist diese Option aus, dann funktioniert alles einwandfrei. Warum diese Option aktiv ist weiß ich nicht, sicherlich nicht bewusst. Auf jeden Fall sollte es nicht zu diesem Ergebnis führen.
Schöne Grüße
Ist in den Einstellungen unter "Debuggen" die Option "Code für valgrind erzeugen (-gv)" aktiv, dann erscheinen die 0er. Ist diese Option aus, dann funktioniert alles einwandfrei. Warum diese Option aktiv ist weiß ich nicht, sicherlich nicht bewusst. Auf jeden Fall sollte es nicht zu diesem Ergebnis führen.
Schöne Grüße
Tipp für PostgreSQL: www.pg-forum.de
- photor
- Beiträge: 445
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
- CPU-Target: 64Bit
Re: Free Pascal 3.2.2-rc1 verfügbar
DAS wird es auch bei mir sein! Hatte kurz mit valgrind experimentiert.Ich934 hat geschrieben: ↑Mo 29. Mär 2021, 17:23Ich habe jetzt die Einstellungen verglichen und das Problem gefunden.
Ist in den Einstellungen unter "Debuggen" die Option "Code für valgrind erzeugen (-gv)" aktiv, dann erscheinen die 0er. Ist diese Option aus, dann funktioniert alles einwandfrei. Warum diese Option aktiv ist weiß ich nicht, sicherlich nicht bewusst. Auf jeden Fall sollte es nicht zu diesem Ergebnis führen.
Also nehme ich die Option (erstmal) wieder raus.
Merci für‘s Suchen,
Photor
-
- Beiträge: 832
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Free Pascal 3.2.2-rc1 verfügbar
Das Problem ist, dass -gv dafür sorgt, dass der C Memory Manager (Unit cmem) verwendet wird. Und heaptrc kann eben nicht mit cmem zusammen verwendet werden. Trunk beschwert sich hier übrigens auch:Ich934 hat geschrieben: ↑Mo 29. Mär 2021, 17:23Ist in den Einstellungen unter "Debuggen" die Option "Code für valgrind erzeugen (-gv)" aktiv, dann erscheinen die 0er. Ist diese Option aus, dann funktioniert alles einwandfrei. Warum diese Option aktiv ist weiß ich nicht, sicherlich nicht bewusst. Auf jeden Fall sollte es nicht zu diesem Ergebnis führen.
Code: Alles auswählen
PS D:\fpc\git> .\compiler\ppc386.exe -gh -gv
Error: You can not use both options (-gh) (-gv) at same time.
FPC Compiler Entwickler
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
OK, das macht Sinn. Dann sollten sich diese Optionen in Lazarus aber auch gegenseitig ausschließen - ok das jetzt dann nicht mehr dein Part.
Aber auch die Meldung vom heaptrc sollte dann so nicht erscheinen. Eine Fehlermeldung als Ausgabe wäre hier imo sinniger...
cu tb
Aber auch die Meldung vom heaptrc sollte dann so nicht erscheinen. Eine Fehlermeldung als Ausgabe wäre hier imo sinniger...
cu tb
Tipp für PostgreSQL: www.pg-forum.de
-
- Beiträge: 1100
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Free Pascal 3.2.2-rc1 verfügbar
Vielleicht irgendwo eine andere heapmgr unit installiert? zb cmem ?
-
- Beiträge: 832
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Free Pascal 3.2.2-rc1 verfügbar
Wie gesagt, trunk beschwert sich hier mittlerweile. Und ich werd' schauen, dass ich das auch in 3.2.1 zurückziehe, damit der 3.2.2-final sich ebenfalls beschwert.
heaptrc hat keine Ahnung was für ein Memory Manager verwendet wird. Deswegen haben wir uns ja auch dazu entschlossen die Kombination Valgrind & HeapTrc beim Kompilieren zu blockieren.
FPC Compiler Entwickler
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
Moin,
die Komponente TParadoxDataset erzeugt einen Pointer Fehler mit 3.2.2-RC1 bei folgendem Code:
Es wurde vorher eine Tabelle geöffnet und der RecordCount des DataSet ist > 0. Mit 3.2.0 funktioniert das ohne Probleme.
die Komponente TParadoxDataset erzeugt einen Pointer Fehler mit 3.2.2-RC1 bei folgendem Code:
Code: Alles auswählen
pdxGrid.DataSource.DataSet.First;
Tipp für PostgreSQL: www.pg-forum.de
Re: Free Pascal 3.2.2-rc1 verfügbar
"Erzeugt einen Fehler" ist wenig hilfreich. Welchen Fehler?
TParadoxDataset gibt es zweimal. Eine Version kommt mit Lazarus und steht im Ordner components/paradox. Die andere Version steht im Lazarus-Components-and-Code-Repository im Order components/tpardoxdataset und hat zwei Packages mit identischem Inhalt: das für die Installation empfohlene heißt lazparadoxpkg.lpk, das andere lazparadox.lpk, hat aber einen Namenskonflikt mit dem Package aus der Lazarus-Installation.
Also genug Möglichkeiten, etwas falsch zu machen. Welches Package macht das Problem? Woher hast du es?
TParadoxDataset gibt es zweimal. Eine Version kommt mit Lazarus und steht im Ordner components/paradox. Die andere Version steht im Lazarus-Components-and-Code-Repository im Order components/tpardoxdataset und hat zwei Packages mit identischem Inhalt: das für die Installation empfohlene heißt lazparadoxpkg.lpk, das andere lazparadox.lpk, hat aber einen Namenskonflikt mit dem Package aus der Lazarus-Installation.
Also genug Möglichkeiten, etwas falsch zu machen. Welches Package macht das Problem? Woher hast du es?
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
Ich habe das Paket aus dem OPM.
Projekt DBKonverter hat Exception-Klasse >>EInvalidPointer<< ausgelöstm mit der Meldung: Invalid pointer operation
Bei Adresse ...
Tipp für PostgreSQL: www.pg-forum.de
-
- Beiträge: 832
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Free Pascal 3.2.2-rc1 verfügbar
Würdest du das bitte auf ein möglichst kleines Beispiel reduzieren, mit dem man das auch nachvollziehen kann?Ich934 hat geschrieben: ↑So 4. Apr 2021, 10:40die Komponente TParadoxDataset erzeugt einen Pointer Fehler mit 3.2.2-RC1 bei folgendem Code:
Es wurde vorher eine Tabelle geöffnet und der RecordCount des DataSet ist > 0. Mit 3.2.0 funktioniert das ohne Probleme.Code: Alles auswählen
pdxGrid.DataSource.DataSet.First;
FPC Compiler Entwickler
-
- Lazarusforum e. V.
- Beiträge: 317
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Free Pascal 3.2.2-rc1 verfügbar
Hier ein Minimalprogramm. 3.2.0 funktioniert, 3.2.2 bringt den Pointer-Fehler. Paradox-Komponente aus OPM installiert.Würdest du das bitte auf ein möglichst kleines Beispiel reduzieren, mit dem man das auch nachvollziehen kann?
Code: Alles auswählen
program ParadoxTest;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX} {$IFDEF UseCThreads} cthreads, {$ENDIF} {$ENDIF}
Interfaces,
Forms,
Unit1,
Classes,
SysUtils,
Controls,
Graphics,
Dialogs,
DB,
DBGrids,
LazFileUtils,
paradoxds;
{$R *.res}
var
pdxDataset: TParadoxDataset;
pdxDataSource: TDataSource;
pdxDBGrid: TDBGrid;
begin
pdxDataset := TParadoxDataset.Create(nil);
// Pfad anpassen !!!
pdxDataset.TableName := '<Pfad zur Paradox-Datei>';
pdxDataset.Open;
// Dataset
pdxDataSource := TDataSource.Create(nil);
pdxDataSource.DataSet := pdxDataset;
// Tabelle auslesen
pdxDBGrid := TDBGrid.Create(nil);
pdxDBGrid.DataSource := pdxDataSource;
// Datensätze in Tabelle vorhanden
if pdxDBGrid.DataSource.DataSet.RecordCount > 0 then
begin
// auf ersten DS springen
pdxDBGrid.DataSource.DataSet.First;
end;
// Tabelle schließen
pdxDBGrid.Free;
pdxDataSource.Free;
pdxDataset.Close;
end.
Tipp für PostgreSQL: www.pg-forum.de