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.
Compiler Fehler ??
- 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 ??
- Dateianhänge
-
- SDLNewtonBasicDemo.tar.gz
- Programmsourcen..
- (626.21 KiB) 77-mal heruntergeladen
--
Just try it
Just try it
-
- 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 ??
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.
- 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 ??
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
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 ...
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
Just try it
-
- 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 ??
corpsman hat geschrieben:Gibts nen Compilerswitch der die Optimierung kurzzeitig ausschaltet ?
-O-
Martin
- 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 ??
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...
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
Just try it
-
- 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 ??
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.
- 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 ??
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.
[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
Just try it