Autor Beitrag
king-soft
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: Do 28.02.08 23:56 
Hallo Leute,

eine etwas kuriose Geschichte beschäftigt mich ab dieser Woche.
Ich habe ein Warenwirtschaft mit Delphi6/FastReports4.4/ADS8.1 und anderen kleineren Komponenten in den letzten Jahren geschrieben.
Selbst setze ich mein Programm ca. ein Jahr ein (HP-NX7010 / XP-Pro SP2). Bei zwei Kunden seit ca. 3 Monaten relativ reibungslos.
Die eingesetzten Kunden-PCs reichen von Win95, Win98SE, Win2000 bis WinXp. Das Programm liegt meistens auf einem gemappten Server
von dem es von den Clients aufgerufen wird. Die ADS-Datenbank wird über ADS.ini in das jeweilige Datenverzeichnis gesteuert.

Nun war ich gestern bei einem neuen Kunden:
Relativ einfaches Peer-to-Peer-Netz auf dem über gemappte Server-Laufwerke auch alles funktioniert. Mein neues Programm draufgespielt und siehe da, auf dem Server und zwei weiteren XP-PCs kommt sofort nach dem Programmstart eine Fehlermeldung: "WWS-System hat ein Problem festgestellt und muß beendet werden. blablabla Problembericht senden...etc..." Dahinter steckt eine Schutzverletzung c0000005 an Adresse 0000040413e.
Auf Zwei anderen XP-PCs im Netz gehts einwandfrei. Also das Programm local auf C: auf einen nagelneuen FSC-XP-Pro-PC und der gleiche Fehler kommt wieder; ergo hats nix mit dem Netz zu tun.
Ich mein Programm an der ersten Stelle im Quellcode ein Meldungsfenster eingebaut, laufen lassen, der gleiche Fehler! Also hat auch nix mit einem evtl. Dateizugriff auf die Datenbank zu tun. (Ein anderes kleineres Delphi-Tool von mir läuft auch auf dem Server sowie local).

Mein Latein ist erstmal am Ende. Gibt es andere Debugmöglichteiten um soetwas kurioses zu ergründen? Wie gesagt; auf ca. 40 anderen unterschiedlichen PCs läuts einwandfrei.
Für eure Hilfe bin ich jetzt schon dankbar.
Grüße Bernd
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 29.02.08 00:18 
Moin und :welcome: im Forum!

user profile iconking-soft hat folgendes geschrieben:
Dahinter steckt eine Schutzverletzung c0000005 an Adresse 0000040413e.
Schau mal hier, damit solltest du der Zeile in deinem Code auf die Schliche kommen können. ;) Vielleicht kommst du damit schon weiter. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 29.02.08 00:30 
Das die Fehlerberichterstattung von Windows kommt, deutet darauf hin, dass der Fehler durch eine in der Projekt-File aufgerufene Methode ausgelöst wird (oder eine davon aufgerufene ...), da jegliche Exceptions der Main-Loop (Application.Run) von Delphi abgefangen werden und Windows daher nicht wirklich von den Fehlern was mitbekommt.

Windows sollte Dir in seinem Fehlerbericht unter anderem auch einen Stack-Trace liefern. Dieser kann u.U. auch bei der Lokalisierung helfen, wenn der erste genannte Eintrag nicht wirklich aussagekräftig ist. Falls Du beim Auswerten des Stack-Traces Probleme hast, meld dich kurz (mit ner Kopie des Fehlerberichts - ggf. auch Fehlerbericht per PN).

MfG,
BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
king-soft Threadstarter
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: Fr 29.02.08 12:07 
Titel: Danke erstmal
Hallo Ihr beiden,

danke erstmal für eure prompte Antworten.

Narses: werde deinen link (der ja auch an BenBe verweist) nachgehen und melde mich dann wieder.

BenBE: hilft dir evtl. der kleine DrWatson-Bericht? siehe Anhang.
Ich werde dein Tool mal testen und melde mich mit dem Ergebnis.
(Meine aktuelle EXE-Version ist übrigens incl. Debug-Informationen)

Grüße Bernd
Einloggen, um Attachments anzusehen!
king-soft Threadstarter
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: Fr 29.02.08 12:54 
Titel: OmMAP-Ergebnis
Hallo BenBE,

habe dein tool ausprobiert und mir vorher eine map-Datei aus dem akt. Programm erstellt; Ergebnis:

OmMap.exe "Auftrag.map" 0040413e
OmMAP Version 0.1 by BenBE

Parsing arguments ...
- Mapfile: Success
Mapfile: Auf.map

- Image Base Address: Guessed
BasePtr: 0x00400000

Noninteractive mode:

Querying: 0x0040413E
================================
Unit: System
- Start: 0x00401000
- End: 0x0040799E
Symbol: TObject.ClassParent
- Class: TObject
- Method: ClassParent
- Location: 0x00404134
- Offset: 0x0000000A
Canonical: System: TObject.ClassParent+0xA
================================

....aber sagt mir leider nix weiter?!? Kannst du damit was anfangen?
Gruß Bernd
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 29.02.08 14:36 
Ich weiß, warum ich DrWatson nicht zum Debuggen nutze ... die wichtigen Infos sind bereits wieder abgeschnitten.

Aber so mal ne kurze Frage:
- Sicher, dass die Mapfile zur EXE exakt passt???
Delphi generiert im Normalfall nämlich keine Mapfile, bei der Prozedureinsprungpunkte innerhalb eines ASM-Beefehls liegen

- Kannst Du folgende Adressen bitte auch kurz durchlaufen lassen?
# 00407a33
# 00404961
# 00404c05
# 00404bf6

Ich kann aber anhand des Stacks nur bedingt nen Trace konstruieren, da die Zeiger nur teilweise Sinn ergeben ...

Kannst Du in der Projekt-File einmal ein paar zusätzliche Message-Boxes einbauen? Wichtig wäre, dass dort ggf. auch enthalten ist, ob bestimmte Dinge, die Du initialisierst, wirklich ungleich nil sind.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.02.08 18:44 
user profile iconking-soft hat folgendes geschrieben:
Auf Zwei anderen XP-PCs im Netz gehts einwandfrei. Also das Programm local auf C: auf einen nagelneuen FSC-XP-Pro-PC und der gleiche Fehler kommt wieder; ergo hats nix mit dem Netz zu tun.


sag mal, wie schnell sind die problem PC's? kann es sein, dass 'n code nicht ganz mitkommt... erinnere mich da an verschiedene probleme und borland hatte da auch 'n bugfix zur verfügung gestellt...

ggf. hilft's das programm mit 'ner neueren delphi version zu compilieren...
king-soft Threadstarter
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: Fr 29.02.08 22:38 
Hallo Grenzgaenger,

die PC's sind Pentium-IV 3,4 und 3,6 Ghz.
Ich werde auch deiner Vermutung dem mal nachgehen und bei einigen Leuten in den nächsten Tagen meine Software auf schnellen Rechnern ausführen. Ich denke dass es aber nicht der Grund sein dürfte, da ja eine anderes kleineres Tool(Reporter.EXE 3,4 MB) von mir (auch in Delphi6) auf den PC's läuft.


Hallo BenBE,

sicherheitshalber habe ich eben nochmal neu compiliert (diesmal mit Compiler-Optimierung und ohne Debug-
Informationen), eine Map erzeugt, alles auf einen dieser PC's gepackt (einen habe ich mit ins Büro genommen), laufen lassen....und crash! Das gibts doch garnicht! In der Auftrag.dpr-Datei habe in der ersten ausführbaren Zeile (nach begin) auch noch mal eine Meldungsbox mit aufgenommen. Crasht vor der Meldung! DrWatson packe ich nochmal bei, sowie die Auswertungen von deinem Tool.

Viel Glück!
Verzweifelter Gruß Bernd
Einloggen, um Attachments anzusehen!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 29.02.08 23:19 
Ausgehend von der Feststellung, dass der Fehler vor Ausführung der ersten Zeile der Projekt-File auftritt, muss es an einem der Initialization-Abschnitte liegen.

Verwendest Du irgendwelche Zusatz-Komponenten? Wenn ja, welche?
Besitzen diese einen Initialization-Abschnitt, der nicht leer ist?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
king-soft Threadstarter
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: Fr 29.02.08 23:29 
Die Anwendung besitzt einen Initialization-Abschnitt; in dem ein CreateMutex(...) gesetzt wird; auch vor diesem ersten Befehl habe ich ein Meldungsfenster gesetzt; kommt aber nicht an!

Ansonsten benutze ich noch einige Fremd-Komponenten:
- FastReport 4, EhLib3.6, Jedi, TBX-Toolbar2000 und etwas TMS

Aber was ich nicht verstehen will: wieso läuft auf allen bisherigen PC's (Win95 bis XP-Pro-Sp2) das Programm (mitterweile 8,6MB) ohne Probleme????
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 29.02.08 23:33 
EhLib sagt mir nix, Jedi sind IMHO in der Hinsicht soweit clean, genauso FastReport. Schau am besten einfach mal in jeglichen Units dieser Komponenten, ob ein entsprechender Abschnitt vorliegt. U.a. kann auch bei eigenen Units da schnell mal was schiefgehen, also schau auch da mal, wo irgendwas vom OS blockiert werden könnte ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
king-soft Threadstarter
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: So 02.03.08 19:51 
user profile iconBenBE hat folgendes geschrieben:
EhLib sagt mir nix, Jedi sind IMHO in der Hinsicht soweit clean, genauso FastReport. Schau am besten einfach mal in jeglichen Units dieser Komponenten, ob ein entsprechender Abschnitt vorliegt. U.a. kann auch bei eigenen Units da schnell mal was schiefgehen, also schau auch da mal, wo irgendwas vom OS blockiert werden könnte ...


EhLib ist ne nette Sammlung von einigen Komponenten z.B. erweiterter dbGrid mit Freeze-Spalten, Suchfunktionen und speziellen Fußzeilen mit diversen Aggregat-Funktionen.

Ich habe mal kurz in einige von den Initialization-Abschnitten reingesehen, aber nichts außergewöhnliches entdeckt. In einige ausgesucht Initialization-Abschnitte packe ich nun nach und nach Messageboxes rein.
In einigen ist das Programm immerhin schon durchgelaufen...ist echt ne Sissiphusarbeit.

So und jetzt kommts.... nachdem ich nun einige male an einigen Stellen Meldungsfenster eingebaut habe und
auf einen von diesen PC's gestartet habe lief das Programm irgendwann durch....einfach so!? alsob der PC sich gesagt hat "jetzt habe ich die Nase voll und mache keinen Schutzfehler mehr". (Firewall ist die ganze Zeit aus)

Da ich KEINE neue Zeile zuprogrammiert habe; außer den Fenstern(die aber wieder auskommentiert); kann das Programm doch nicht einfach so laufen? Verstehe ich noch weniger als vorher.?????
Also werde ich beim Kunden die restlichen beiden Rechner auch noch testen. Auf dem Server mache ich es gleich mal Fernwartung via VNC: Ergebnis: Fuktioniert! Merkwürdig. Aber ich möchte schon gerne wissen wie soetwas kommen kann, nicht das nach irgendeinem Update der Software dieses Problem wieder auftritt.

Ich werde von dem anderen PC berichten...
king-soft Threadstarter
Hält's aus hier
Beiträge: 11

Win98,2000,XP
Delphi6Pro
BeitragVerfasst: So 02.03.08 22:52 
Aktueller Status:

Dank BenBE haben wir eine Stelle lokalisiert in der das Programm beim Start abschmiert:
- JclSysInfo.pas bringt in der Fuction GetCPUSpeed eine Exception EZeroDivide !!!
- Kommt nur bei Intel-4-PC's größer 3 Ghz !
Also JEDI (bzw. JCL 1.22)
Der Folgefehler Schutzverletzung c0000005 kommt nur weil das Programm dann gerne abbrechen möchte und beim Finalization ein Objekt freigeben möchte was noch nicht Initialisiert wurde. So sucht man als Entwickler schön an der falschen Ecke.

Dann beim Suchen im Internet ein Fix zu der Routine gesucht, gefunden, übersetzt und alles wieder in Butter.

Also herzlichen Dank Benny und seinem OmMap-Tool!