Problem mit der 64 Bit Version

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1778
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Problem mit der 64 Bit Version

Beitrag von fliegermichl »

Ich habe FPC/Lazarus mit fpcupdeluxe Stable/Fixes frisch installiert. Version ist Lazarus 4.7 (rev lazarus_4_6-58-g310cad12d8) FPC 3.2.2 x86_64-win64-win32/win64

Wenn ich 32 Bit compiliere, funktioniert alles einwandfrei.
Bei der 64 Bit Version bekomme ich Access Violations an verschiedenen Stellen mit z.B. so einem Aufrufstack:
aufrufstack.png
aufrufstack.png (66.81 KiB) 137 mal betrachtet
Da habe ich nicht die geringste Idee, was ich da tun könnte. Ist da was bekannt in der Richtung?

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

Re: Problem mit der 64 Bit Version

Beitrag von theo »

Wenn du was compilierst?
Die IDE? Ein Programm von dir? Ein "leeres" Formular? ...

Zur Windows Version kann ich nicht viel sagen, aber auf Linux sind 64bit Standard und da funzt das.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1778
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Problem mit der 64 Bit Version

Beitrag von fliegermichl »

theo hat geschrieben: Mi 20. Mai 2026, 08:34 Wenn du was compilierst?
Die IDE? Ein Programm von dir? Ein "leeres" Formular? ...
Ja sorry, das hätte ich erwähnen sollen. Es handelt sich um ein Programm von mir.
Wenn ich versuche, dieses Problem in ein nachvollziehbares Projekt zu extrahieren, dann geht das nicht.
Heisst, das Problem tritt dann nicht auf.
Aber wo fängt man in einem solchen Fall bei der Fehlersuche an?

Nachvollziehbar lande ich z.B. immer an einer Stelle in Virtualtrees.pas in der Zeile

Code: Alles auswählen

  Result := AllocMem(Size + FTotalInternalDataSize);
in der Methode TBaseVirtualTree.MakeNewNode.

Aber sowohl Size als auch FTotalInternalDataSize enthalten sinnvolle Werte und wie soll es bei AllocMem eine Zugriffsverletzung geben?
Ich versuche mal den FPC mit Debuginformationen zu erstellen. Vielleicht hilft mir das weiter.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7304
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Problem mit der 64 Bit Version

Beitrag von af0815 »

Grundlegend einmal alles Clean Kompilieren, auch das Projekt. Nicht das da auf "veraltete" ppu's zugegriffen wird. Besonders beim Umstellen von 32 Bit auf 64 unter Windows. Ist dein Lazarus 32 oder 64 Bit ? Sprich mit fpcupdeluxe in 32 Bit oder 64 Bit installiert.

Unter Windows habe ich mir 2 Installationen immer gemacht. Eine nativ 32 Bit und eine nativ 64 Bit. Und wenn ich ein Projekt von 32 auf 64 Bit umgestellt habe, dann auch alle ppu's entfernt, dann erst rekompiliert. Weil am Anfang beim Umstellen hatte ich auch immer wieder komische Erscheinungen. Ist aber auch schon wieder einige Lazarus releases zurück.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Problem mit der 64 Bit Version

Beitrag von theo »

fliegermichl hat geschrieben: Mi 20. Mai 2026, 08:52 Aber wo fängt man in einem solchen Fall bei der Fehlersuche an?
Nachdem was AF gesagt hat, beim Pointergemurkse. :wink:
Aber da müssten im Nachrichtenfenster eigentlich beim compilieren schon Meldungen kommen.

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

Re: Problem mit der 64 Bit Version

Beitrag von wp_xyz »

fliegermichl hat geschrieben: Mi 20. Mai 2026, 08:19 Da habe ich nicht die geringste Idee, was ich da tun könnte.
Immer wenn etwas Seltsames und Unerwartetes passiert, sauber neu kompilieren: Beim Projekt: "Start" > "Aufräumen und kompilieren", manchmal reicht "Start" > "Neu kompilieren". Manchmal auch komplett die IDE neu kompilieren: "Werkzeuge" > "Lazarus kompilieren einrichten" > "Alle aufräumen" und "Nach Neukompilieren zum automatischen Modus wechseln" markieren > "Neu kompilieren".

Zum Wechsel zwischen 32 und 64 bit: Mir ist das Cross-Compilieren zu kompliziert... Ich habe mir, ähnlich wie af0815, separate Installationen für 32 und 64 bit eingerichtet, zur Unterscheidung habe ich dem Editor-Gutter unterschiedliche Farben gegeben. Wenn ich ein Projekt unter 64 bit entwickelt habe, und es in 32 bit brauche, beende ich die 64-bit IDE, starte die 32-Bit IDE und lade das Projekt dort. Extern installierte Packages habe ich in einem gemeinsamen Ordner, auf den alle meine Lazarus-Installationen (egal, welche Version) zugreifen können. Es funktioniert erstaunlich gut, dass alles automatisch neu kompiliert wird. Und wenn's mal nicht klappt --> siehe oben.

Antworten