Lazarus-Projekt bringt auf anderem PC Fehler

Für Fragen rund um die Ide und zum Debugger
Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Lazarus-Projekt bringt auf anderem PC Fehler

Beitrag von Eb »

Hallo,

Ich brauche mal einen Tip zur Fehlersuche.

Ich habe auf meinem PC (XP-Professional SP1) ein lazarus-Projekt erstellt (hat ca. 10 Formulare).
Nun wollte ich auf einem anderen PC weiterentwickeln.
Hab das Projektverzeichnis gezippt und auf dem zweiten PC (XP-Professional SP2) entpackt.

Auf dem zweiten öffne ich das Projekt , starte es (F9) und bekomme folgende Fehler:

Ein Fenster mit
Titel: 'Error'
Text: Project raised exception class 'External: SIGILL'


Ein zweites Fenster (dieses kommt zwei mal):

Titel 'Ausführung angehalten'
Text:
Adresse: $00265C1E
Prozedur: ??
Datei:

(TODO Assembler-Ansicht an dieser Stelle


Im Fenster Nachrichten steht:
Projekt "rundenzaehler" erfolgreich gebaut. :)


Man kann nur OK klicken und dann über Projekt - Halt das ganze stoppen.
Auf beiden PCs ist die Selbe Lazarus-version (09.24) drauf.


Wie würdet ihr da vorgehen, um den Fehler zu finden?

Gruss
Eberhard

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

Re: Lazarus-Projekt bringt auf anderem PC Fehler

Beitrag von theo »

Debugger einschalten und Aufrufstack anschauen.

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

Probier´s mal mit Projekt veröffentlichen statt die Projektordner einfach so zu kopieren.

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Hallo,

Ich hab es auch mit Projekt veröffentlichen versucht, der Effekt ist derselbe.

Über Ansicht - Debuggerfenster - habe ich Debuggerausgaben und Aufrufstack eingeblendet.

Im Fenster Call Stack

kommt eine unendliche Liste der Form(ohne die Unterstriche):
Source Line Function
______ 0 ___ ??
______ 0 ___ ??


Das Fenster 'Debug Output'
habe ich verglichen von Computer1 (da tuts) und Computer2 (da tuts nicht)

Die erste abweichende Ausgabe bei Computer2 ist:

'stopped,reason="signal-received",signal-name="SIGILL,signal-meanings="Illegal
instruction",thread-id="1",frame={addr="0x00265c1e",func="??",args=[]}

dann gehts weiter mit

stack-info depth
done ...

dann kommen diese beiden ausgaben im Wechsel immer weiter:

stack-list-arguments 1 0 0
done ...

stack-list-frames 4 4
done...

Habt ihr noch ne Idee, was ich weiter tun könnte?

Gruß
Eberhard

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
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:

Beitrag von af0815 »

Demoprojekte aus dem Lazarusverzeichnis kompilieren + laufen lassen geht ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

versuchst du hier vieleicht ein 64 bit programm auf einem 32 bit system auszuführen und schaffst das aus einem mir unauffindlichen grund auch oder irgendetwas anderes komisches ? illegal instruction hört sich arg nach einem ungültigen executable an.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beim Beispielprogramm imgviewer tritt der Fehler auch auf

Beitrag von Eb »

Hallo,

Es sind beides XP-Professional 32-Bit Versionen.
Computer1 hat SP1 Computer2 hat SP2.

Ich habe ein paar Beispiele aus \lazarus\examples ausprobiert.
Einige gingen problemlos,
beim Beispiel imgviewer tritt der Fehler auch auf.

Allerdings nicht beim Start des Projekts, sondern wenn man auf das Icon mit der kamera klickt,
oder auf File - Open directory geht.

Es soll hier der Dialog zum Aussuchen eines Verzeichnisses aufgerufen werden:

if SelectDirectory(SSelectImageDir,'/',Dir) then
AddDir(Dir,False);


Komischerweise tritt der Fehler nicht immer auf - aber in ca. 90% der Fälle!

Die Fehlermeldung ist aber genauso wie bei meinem Projekt:
'External SIGILL' und dann 2 Fenster mit 'Ausführung angehalten'

Habt ihr noch ne Idee?
Gruss Eberhard

Dets
Beiträge: 61
Registriert: Di 11. Sep 2007, 16:59
OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Lage
Kontaktdaten:

Re: Beim Beispielprogramm imgviewer tritt der Fehler auch au

Beitrag von Dets »

Eb hat geschrieben:Habt ihr noch ne Idee?


Nur mal so eine Vermutung: Data Execution Prevention

Guckst du hier

Dets ...

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Hallo,

Die Ausführungsverhinderung stand auf 'nur für erforderliche Programme' (der obere Knopf)

Habs testweise auf 'für alle Programme mit Ausnahme ...' gestellt und lazarus und gdb bei den Ausnahmen eingetragen.

Hat aber leider nichts gebracht ...

Eberhard

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Und ohne gdb ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

macht keinen Unterschied,

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Kannst du n Testperojekt amchen bei dem das so ist ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Mach ich am Wochenende.

Ich poste dann mein Ergebnis,

Merci erstmal

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Problem gelöst

Beitrag von Eb »

Die Ursache ist gefunden.

Ich habe aus meinem Projekt nach und nach alle Komponenten rausgeworfen, bis es auf Computer 2 dann keinen Fehler mehr brachte.

Der Fehler liegt beim Zugriff auf den Parallelport.

Computer 2 hat nämlich keinen ... :(

Für den Zugriff auf den Parallelport verwende ich die inpout32.dll in dieser Form:

Code: Alles auswählen

function Inp32(wAddr:integer):integer; stdcall; external 'inpout32.dll';


Ich habe nun eine globale Variable zeiterfassung eingefügt, die ich vor dem Zugriff abfrage und so funktioniert es jetzt:

Code: Alles auswählen

case zeiterfassung of
         0    :  wert := 0;              // 'simulation'
         1    :  wert := inp32($379);    // 'parallel'
         2    :  wert := 0;              // 'seriell'
      else       wert := 0;
   end;


Vielen Dank für eure Tips,
noch ein schönes Wochenende,

Eberhard

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Problem gelöst

Beitrag von Euklid »

Eb hat geschrieben:Der Fehler liegt beim Zugriff auf den Parallelport.

Computer 2 hat nämlich keinen ... :(



Ui. Manchmal scheinen die Fehler ganz schön versteckt zu liegen...

Antworten