Compiler Fehler ??

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Compiler Fehler ??

Beitrag von corpsman »

hossa ihr Spezialisten,

ich bin gerade dabei ein altes Spiel von mir von Win32 nach Kubuntu Jaunty 32Bit mit Hilfe des FPC 2.2.4-3 und Lazarus v0.9.27 beta ( SVN - Version )zu übersetzen.

Und wie es der Betreff schon andeutet habe ich einen Fehler der deutlich über meinem Verständniss liegt, und den ich daher als Compilerfehler einstufe.

Doch entscheidet selbst.

Folgendes geschieht auf meinem System.

Der im Anhang eingefügte source läst sich so wie er ist Tadellos Compilieren und auch starten.

ABER Wenn man hergeht und in Zeile 131 der Datei "newtonprimitives.pas" den Kommentar weg macht, also den Source der da drin steht "aktiviert" dann wirft der Compiler einen Segmentation fault beim Aufruf der Zeile 123, ja genau, ihr lest richtig das ist 8 Zeilen weiter oben und hat rein gar nichts mit dem aus / einkommentierten zu tun.

Und genau das ist der Grund warum ich mit meinem Latein am Ende bin, seit 2 Tagen versuche ich nun raus zu finden woran das liegt, Diese kleine Demo zeigt den Fehler zum Glück auch auserhalb meines eigentlichen Projectes.

Also es würde mich schon mal beruhigen, wenn jemand anders auch diesen Fehler feststellen kann.

Wer mir natürlich sagen kann woran es liegt, und wie man diesen "Fehler" behebt. Der ist natürlich mein Held des Tages.
Dateianhänge
SDLNewtonBasicDemo.tar.gz
Programmsourcen..
(626.21 KiB) 77-mal heruntergeladen
--
Just try it

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Compiler Fehler ??

Beitrag von Hitman »

Ok, also das ist in der Tat äußerst merkwürdig. Nach etwas rumspielen konnte ich es auf die for-schleife eingrenzen. Nachdem ich sie durch eine while-Schleife ersetzt habe, läuft der Code. Das seltsame ist, dass dieser Code nichtmal angesprungen wird (hab dort mal einen Breakpoint gesetzt, wird aber nie erreicht). Nahe liegt also, dass irgendwelche Settings (FPU vlt. sogar? kA ob Schleifen das irgendwie ausnutzen) von den Bibliotheken mit einer "Optimierung" von FPC kollidiert. Aber das ist jetzt absolut ins blaue geschossen.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Compiler Fehler ??

Beitrag von corpsman »

Das Heist bei dir trit der Fehler auch auf und ich bin nicht verrückt.

Bei meinem Hauptproject kam der Fehler auch , wenn ich in Zeile 122

Code: Alles auswählen

Collision := nil;


reingeschrieben hatte. In dem Sample geschieht das nun nicht..

Das es was mit den Compilerswitches zu tun haben könnte ist auch eine Vermutung, ich kenne mich nur leider überhaupt kein bischen mit so etwas aus.

Gibts nen Compilerswitch der die Optimierung kurzzeitig ausschaltet ? Ich denke ja immernoch, das der Compiler da irgendwas "Verbockt" und, oder das er es nicht auf die Reihe kriegt das die Libary die er da aufruft in C++ geschrieben ist ...
--
Just try it

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Compiler Fehler ??

Beitrag von mse »

corpsman hat geschrieben:Gibts nen Compilerswitch der die Optimierung kurzzeitig ausschaltet ?

-O-

Martin

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Compiler Fehler ??

Beitrag von corpsman »

Lol,

Ich hab nun also die for schleife durch die While Schleife ersetzt. Und du hast Recht es Funktioniert.

Es funktioniert sogar wenn man dann die For schleife wieder Rein macht, hauptsache die While Schleife bleibt auch drin...
--
Just try it

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Compiler Fehler ??

Beitrag von Hitman »

Naja sofern die Aufrufkonvention stimmt, die du angegeben hast ... die ist im Moment ja "cdecl", wenn die Lib aber in C++ geschrieben ist, wäre "stdcall" auch nicht gerade ungewöhnlich. Da die jeweilige Aufrufkonvention Einfluss darauf hat, was mit den Registern passiert, könnte das schon zu irgendwelchen Unstimmigkeiten führen.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Compiler Fehler ??

Beitrag von corpsman »

Also den c header hab ich einem C-Programmierer gezeigt, und der meinte das das cdcel stimmt.

[Edit]

Also der Disassembliete Code ist genau gleich, bis auf das in der "For" variante noch

das ebx Register in den Stack gesichert wird, sonst ist alles gleich, zumindest bis zum aufruf.
--
Just try it

Antworten