Absturz ohne Fehlermeldung

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Absturz ohne Fehlermeldung

Beitrag von AUGE_OHR »

Herbert hat geschrieben:
AUGE_OHR hat geschrieben:
Herbert hat geschrieben:Was sonst überall läuft, nur bei dieser einen Installation eben nicht.
heisst das jetzt 1 Workstation oder bei einem Kunden ?
p.s. die XppFatal.log wird nicht unbedingt im EXE Directory erzeugt ... also "allgemein" auf allen Laufwerken mal suchen.
Nein, beim Kunden, egal auf welcher Arbeitsstation. Xppfatal entsteht garantiert nicht. Leider.
dann muss es ja ein (Citrix) Server Problem sein ;)
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von brandelh »

Frage, kannst du im aktuellen Verzeichnis (also mit fcreate()) eine Datei erzeugen oder ist das schreibgeschützt (EXE Verzeichnis auf Servern, das kommt vor).
Ich setze mit CurDir() das aktuelle Verzeichnis auf mein Datenverzeichnis, damit ich an die Fehlermeldungen komme.
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Hallo Hubert
Nein, bei dieser Installation ist alles in "meiner" Ordnerstruktur mit korrekten Rechten. Das ist hier in Ordnung.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Die Stack-Einstellung hat das Problem leider nicht gelöst.
Immerhin habe ich zwischenzeitlich Fehlermeldungen erhalten, welche beim Schreiben in eine Datei, welche exklusiv für den User offen ist (Fensterposition abfragen/holen) erscheint. Unbekannter Feldtyp.Regelmässigkeit haben wir keine feststellen können.
Ein anderer Ansatz ist, dass bei Klick auf einer Toolbar das Problem vermeintlich schneller reproduzieren lässt. Bei öffnen desselben Fensters über das Menü und nicht über die toolbar provozierte keinen Absturz. Der Absturz ereignet sich beim Schliessen eines Fensters also nicht einfach so alleine. Aber ohne XppFatal und ohne sonstige Meldungen.
Ich suche noch weiter, das Problem einzugrenzen. Einfach scheint mir die Sache nicht zu sein.
Grüsse Herbert
Immer in Bewegung...
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von UliTs »

Bei mir vermute ich, dass es mit Active-X-Componenten zu tun hat.
Das Ändern des Stack bewirkte bei mir, dass vor dem Schließen ohne XppFatal mehr Zeit verging. In dieser Zeit hatte man den Eindruck, dass das Programm hängt.
Deshalb vermute ich, dass bei dem Problem durch eine rekursive Endlosschleife der Stack bis zum Absturz vollgeschrieben wird.
-
Vielleicht hat eine der Active-X-Componenten eine andere Version als sonst...
-

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Ist zu befürchten. Habe mit dem Systemverantwortlichen nun einen Termin fixiert.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Tom »

Bei mir verursachte eine AX-Komponente große Probleme, der VSPDFViewer von VisageSoft. o:UserEvents := .F. beseitigte diese. Sie traten vor allem auf, wenn anschließend andere Komponenten oder Funktionen aus Fremd-DLLs (beispielsweise List&Label) aufgerufen wurden. Absturz mit XppFatal.
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Absturz ohne Fehlermeldung

Beitrag von Werner_Bayern »

Servus Herbert,

trifft es zwar nicht ganz genau, aber könnte in die Richtung gehen:
http://www.alaska-software.com/scripts/ ... PDRID=6289
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Ja, interessanter Hinweis. Allerdings habe ich keine XppFatal.
Mal sehen, ob ich die Programme lokal nehmen kann.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Absturz ohne Fehlermeldung

Beitrag von Werner_Bayern »

sicherlich ein Test wert. Wenn die Verbindungen - was wir unter VMware auch schon hatten - zwischendrin mal weg sind, kann auch keine xppfatal.log mehr erzeugt werden.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Tom »

"Abstürze ohne Fehlermeldung" (und ohne XppFatal) gehen nach meiner Erfahrung zu mehr als 80 Prozent auf implizite QUITs zurück, die versehentlich ausgelöst wurden. Ich würde mal jede Stelle, an der ein AppExit oder ähnliches ausgelöst wird, mit einem Log-File verknüpfen. Oder alles in einer Funktion bündeln und die standardmäßig loggen.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von brandelh »

Man kann auch eine EXIT Funktion anlegen und den Callstack in eine Protokolldatei ausgeben (so mache ich das auf dem Web-Server mit meinen CGI EXEs)

Code: Alles auswählen

EXIT PROCEDURE LogEnde()
   local x := 0, cTxt := "", cFile := "LogDatei.txt"
   DO WHILE ! Empty( ProcName(x) )
      cTxt += str(x,4)+". "+ ProcName(x) + " ("+alltrim(str(ProcLine(x)))+")" + chr(13)+chr(10)
      x++
   ENDDO
   memowrit( cFile , cTxt)
RETURN
Die Ziffern in Klammern sind die Zeilennummern im Quellcode
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Tom hat geschrieben:"Abstürze ohne Fehlermeldung" (und ohne XppFatal) gehen nach meiner Erfahrung zu mehr als 80 Prozent auf implizite QUITs zurück, die versehentlich ausgelöst wurden. Ich würde mal jede Stelle, an der ein AppExit oder ähnliches ausgelöst wird, mit einem Log-File verknüpfen. Oder alles in einer Funktion bündeln und die standardmäßig loggen.
Ich verwende eine AppQuit()-Funktion.
Diese wird beim erwähnten Absturz nicht durchlaufen. Andere Quits existieren nicht.
Zudem stürzt dasselbe Programm nur bei einer von rund 100 Installationen derart ab.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

brandelh hat geschrieben:Man kann auch eine EXIT Funktion anlegen und den Callstack in eine Protokolldatei ausgeben (so mache ich das auf dem Web-Server mit meinen CGI EXEs)

Code: Alles auswählen

EXIT PROCEDURE LogEnde()
   local x := 0, cTxt := "", cFile := "LogDatei.txt"
   DO WHILE ! Empty( ProcName(x) )
      cTxt += str(x,4)+". "+ ProcName(x) + " ("+alltrim(str(ProcLine(x)))+")" + chr(13)+chr(10)
      x++
   ENDDO
   memowrit( cFile , cTxt)
RETURN
Die Ziffern in Klammern sind die Zeilennummern im Quellcode
Tia, falls eine xbpFatal nicht mehr geschrieben werden kann (falls das System dies noch möchte), würde auch diese Datei nicht mehr erscheinen. Ich habe beim Kunden in meine AppQuit()-Funktion eine Meldung eingebaut, die aber nicht erscheint.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von brandelh »

Da hast du natürlich Recht, wenn z.b. ein Stackfehler die Ursache ist, ist alles zu spät.
Ein Schreibschutz könnte man z.B. aber über einen Pfadnamen zum temp Verzeichnis "umlenken".
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Tom »

Hallo, Herbert.

Bist Du eigentlich sicher, dass keine XppFatal entsteht? Hast Du mal eine vollständige Suche über das Kundensystem laufen lassen? Ich habe hier ja - zuweilen recht erstaunt - davon gelesen, dass Apps programmiert werden, die ihre Laufzeit-/Arbeitsverzeichnisse wechseln. Es ist mir zwar noch nicht gelungen, das nachzustellen, aber es wäre denkbar, dass die XppFatal woanders entsteht. Ein weiterer Grund, warum sie möglicherweise überhaupt nicht erzeugt wird, könnte darin bestehen, dass der angemeldete Benutzer keine Schreibrechte im Ausführungsverzeichnis der Applikation hat, was unter bestimmten Bedingungen standardmäßig der Fall ist (Windows 7: Installation in "program files"). Dann kann die Runtime natürlich auch nix schreiben, obwohl sie vielleicht will. :wink: Man könnte auch mal - wenn der Fehler halbwegs nachstellbar/wiederholbar ist - die PROCMON.EXE aus den Sysinternals-Tools mitlaufen lassen, begrenzt auf die jeweilige EXE. Da sähest Du dann wenigstens, was zuletzt passiert ist oder versucht wurde.
Herzlich,
Tom
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Tom hat geschrieben:Hallo, Herbert.

Bist Du eigentlich sicher, dass keine XppFatal entsteht? Hast Du mal eine vollständige Suche über das Kundensystem laufen lassen? Ich habe hier ja - zuweilen recht erstaunt - davon gelesen, dass Apps programmiert werden, die ihre Laufzeit-/Arbeitsverzeichnisse wechseln. Es ist mir zwar noch nicht gelungen, das nachzustellen, aber es wäre denkbar, dass die XppFatal woanders entsteht. Ein weiterer Grund, warum sie möglicherweise überhaupt nicht erzeugt wird, könnte darin bestehen, dass der angemeldete Benutzer keine Schreibrechte im Ausführungsverzeichnis der Applikation hat, was unter bestimmten Bedingungen standardmäßig der Fall ist (Windows 7: Installation in "program files"). Dann kann die Runtime natürlich auch nix schreiben, obwohl sie vielleicht will. :wink: Man könnte auch mal - wenn der Fehler halbwegs nachstellbar/wiederholbar ist - die PROCMON.EXE aus den Sysinternals-Tools mitlaufen lassen, begrenzt auf die jeweilige EXE. Da sähest Du dann wenigstens, was zuletzt passiert ist oder versucht wurde.
Nein, leider nicht. Der betreffende Kunde ist von meiner Seite her einfach: Alles ist in einem eigenen Verzeichnis mit entsprechenden Unterverzeichnissen, worauf der Benutzer die Rechte hat die er benötigt. Ein "normaler" Fehler wird korrekt in der Fehlerroutine (im aktuellen Arbeitsunterverzeichnis) dokumentiert. Ein xbpFatal gabs letztes Jahr offenbar auch schon mal und steht auch dort.
Das Procmon ist eine gute Idee!
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von brandelh »

Einige PDF Druckertreiber wechseln den aktuellen Pfad, genauso wie XbpFileDialog() ohne :restoreDir := .t.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Tom »

Ja, aber nicht das Arbeitsverzeichnis der Applikation. Das ist schon ein bisschen komplizierter. :wink:
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von brandelh »

Hi Tom,

es ist zwar schon etwas her, aber ich meine dass ich damals Fehlermeldungen wie "Datei nicht gefunden" in meiner Anwendung hatte,
nachdem ich im PDF Druckertreiber das Zielverzeichnis gewählt hatte. Sicher bin ich aber, dass XppFileDialog() das aktuelle Verzeichnis verstellt hat.
Daher verwende ich schon länger nur eigene Funktionen die XppFileDialog() kapseln und die Verzeichnisse wieder herstellen.

Daher verwende ich beim Öffnen der Datendateien immer komplette Pfade, notfalls nach Ergänzung eines relativen Pfades.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Tom »

Hallo, Hubert.

In meinen Anwendungen sorgen SET PATH und SET DEFAULT dafür, dass Tabellen und Indexe gefunden werden. Wenn es eine Verzeichnisstruktur (in der Regel unterhalb des "SET PATH") gibt, werden bei Dateierzeugungen (und nur dann) vollständige Pfadnamen angegeben. Dieses System kollidiert mit keinem XbpFileDialog und übrigens auch nicht mit DirChange oder ähnlichem. Und selbst _SymSave() (SAVE TO ... ALL LIKE usw.) reflektiert diese Pfade. Bei Low-Level-Funktionen und direkten Dateizugriffen können hierdurch allerdings sehr wohl Probleme entstehen. In diesen Fällen sollte man entweder, wie Du skizziert hast, die Pfade anschließend restaurieren (was nach meiner Beobachtung nicht ganz einfach bzw. verlässlich ist), oder immer mit vollständigen Pfadangaben arbeiten.
Herzlich,
Tom
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Herbert »

Da bin ja gut bedient. Ich arbeite immer mit kompletten Pfadangaben.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Tom »

Übrigens ist sich auch die Xbase++-Doku etwas uneinig darüber, was mit "aktuelles Verzeichnis" gemeint ist, obwohl die Formulierung sehr häufig verwendet wird. Liest man die Abschnitte zu SET PATH und SET DEFAULT (und auch zu CurDir()), scheint es stimmig, aber wenn man dann in den Bereich "Standard-Fehlerbehandlung" kommt, findet man das hier:

Wenn eine Fehlerbedingung eintritt, die nicht durch das Standard-Fehlerbehandlungssystem behoben werden kann, erzeugt der Xbase++ Runtime Kernel die Datei XPPFATAL.LOG im aktuellen Verzeichnis.

Das ist definitiv unrichtig. Die Runtime versucht immer, die XppFatal.LOG im Arbeitsverzeichnis ("Ausführen in ...") der Applikation zu erzeugen.
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von Koverhage »

Ich hatte öfters den Fall das Daten die in einem Unterverzeichnis gesichert / kopiert werden sollten
plötzlich im Root Directory oder sonst wo standen. Unter Win 7 (als User mit Administrator Rechten)
bekomme ich z.B. mit WinZip eine Fehlermeldung das ich keine Rechte habe diese im Root zu erstellen.
Wenn der Anwender mehrere Fenster offen hat ganz besonders schlimm war Outlook, etc.
In der Routine hatte ich mit CurDir() gearbeitet (lang ist es her).
Gruß
Klaus
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Absturz ohne Fehlermeldung

Beitrag von UliTs »

Wenn eine Fehlerbedingung eintritt, die nicht durch das Standard-Fehlerbehandlungssystem behoben werden kann, erzeugt der Xbase++ Runtime Kernel die Datei XPPFATAL.LOG im aktuellen Verzeichnis.

Das ist definitiv unrichtig. Die Runtime versucht immer, die XppFatal.LOG im Arbeitsverzeichnis ("Ausführen in ...") der Applikation zu erzeugen.
Tom,
Ich glaube Du irrst Dich!
Die xppfatal.log wird IMMER in's aktuelle Verzeichnis geschrieben!
Die einzige Möglichkeit, das Verzeichnis für die xppfatal.log vorzugeben, ist das aktuelle Verzeichnis zu ändern!
Mit aktuellem Verzeichnis wird das Verzeichnis gemeint, welches Windows bei fehlender Pfadangabe nimmt :-) .

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten