Freepascall und Fehler auf Serverfarm

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
martin_frb
Beiträge: 510
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Freepascall und Fehler auf Serverfarm

Beitrag von martin_frb »

Ronny58 hat geschrieben:Jup, alles 64-Bit aber wie gesagt, ich kann mit Lazarus nicht debuggen.


Lese die links die ich geposted habe.
Application.OnException, oder sowas., dann kann man vom exception object die frames auslesen, und ins logfile schreiben. (Falls das nicht sowieso schon passiert.) Alles von in deiner App, ohne debugger.

Ideal wenn du die App mit debug info UND -gl kompiliert auf dem Server laufen lassen kannst.

Probiere mal
app.exe --debug-log=file.log

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

Wahrscheinlich werden jetzt einige den Kopf schütteln, aber ich bin wirklich nur ein Laien-Programmierer. Von den Postern hier habe ich den Eindruck, Ihr seid maximal fit.
Ich hab auf die von Euch geposteten Seiten geschaut, aber verstehen tue ich wenig bis gar nichts davon.
Ich kratze irgendwo an der Oberfläche von Pascal. Ich kann Komponenten nutzen, arbeite auch etwas mit Pointern, aber das hier ist Hardcore für mich. Dafür programmiere ich zu selten. Auch meine Englisch-Kenntnisse sind nicht so ausgeprägt, wie es dafür nützlich wäre.
Wäre jemand so lieb, einem Trollo etwas präziser zu helfen. Ich bin auch ein Freund von Hilfe zur Selbsthilfe, aber das hier überschreitet völlig meine Grenzen.

LG Ronny

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

@martin_frb

hab in den Projekteinstellungen -gl stehen und in der Verküpfung
W:\MikTools\simpel\project1.exe debug-log=debug.txt
kommt aber nichts raus, genauer gesagt erzeugt keine Datei.
CMD ist bei mir deaktiviert. Das mögen unsere Systemtechniker nicht.

martin_frb
Beiträge: 510
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Freepascall und Fehler auf Serverfarm

Beitrag von martin_frb »

Ok getestet: Neue App, Form + Button.

Exception OHNE try except

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  raise Exception.Create('');
end;
 


gestarted mit (und Schreibrecht fuer die Datei)

Code: Alles auswählen

project1.exe  --debug-log=C:\a.txt


file a.txt

Code: Alles auswählen

 
TApplication.HandleException
  Stack trace:
  $0042C800 line 34 of unit1.pas
  $005398DB line 2711 of include/control.inc
  $00558393 line 54 of include/buttoncontrol.inc
  $00558C36 line 169 of include/buttons.inc
  $0055824E line 20 of include/buttoncontrol.inc
  $0040AFD6 line 592 of ../inc/objpas.inc
  $00529F78 line 5327 of include/wincontrol.inc
  $0058DFE0 line 112 of lclmessageglue.pas
  $004F6DD5 line 2480 of win32/win32callback.inc
  $00594AEC line 395 of win32/win32wsforms.pp
  $762FFD72
  $762FFE4A


Wenn du keine Datei kriegst, dann propiere mal:

Code: Alles auswählen

uses LazLogger;
 

In irgendeiner Unit (geht nur darum das die benutzt wird, egal wo)


Das ganze gilt fuer GUI apps. (Also mit TForm)

Bei Console App mag das anders aussehen.

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

@martin

vielen Dank für die Anleitung. Ich hab's so gemacht und folgendes ist passiert:
Die Latte von Exception-Dialogen kamen, wie gewohnt.
Eine Log-Datei mit folgendem Inhalt wurde erzeugt:

Code: Alles auswählen

 
TApplication.HandleException
  Stack trace:
  $000000000042E873  TFORM1__BUTTON1CLICK,  line 34 of unit1.pas
  $0000000000554A58  TCONTROL__CLICK,  line 2711 of ./include/control.inc
  $0000000000573316  TBUTTONCONTROL__CLICK,  line 54 of ./include/buttoncontrol.inc
  $0000000000573C41  TCUSTOMBUTTON__CLICK,  line 169 of ./include/buttons.inc
  $0000000000573201  TBUTTONCONTROL__WMDEFAULTCLICKED,  line 20 of ./include/buttoncontrol.inc
  $000000000040BF5E
  $0000000000545580  TWINCONTROL__WNDPROC,  line 5327 of ./include/wincontrol.inc
  $00000000005A59EB  DELIVERMESSAGE,  line 112 of lclmessageglue.pas
  $0000000000512816  WINDOWPROC,  line 2480 of win32callback.inc
  $00000000005AD1C2  CUSTOMFORMWNDPROC,  line 395 of win32wsforms.pp
  $00000000777A9BD1


LG Ronny
Dateianhänge
simpel.jpg

martin_frb
Beiträge: 510
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Freepascall und Fehler auf Serverfarm

Beitrag von martin_frb »

Und was steht in Zeile 34 der Unit 1?

erhalte ich beim Beenden der Programme jedes mal ein Latte von Exception-Fehlermeldung.


Gibt Button1 die Form oder irgendwelche Objecte Frei? Oder initiiert es die Beendigung der App?

mark332
Beiträge: 202
Registriert: Do 16. Mai 2013, 13:49
OS, Lazarus, FPC: Windows 10 H.P. (x64) / Ubuntu 14.04.X
CPU-Target: AMD Octacore 4.0GHz

Re: Freepascall und Fehler auf Serverfarm

Beitrag von mark332 »

Moinsen,

da der Fehler beim Beenden auftritt und in der Fehlermeldung "Access violation" steht, würde ich spontan darauf tippen, dass
entweder versucht wird, ein Objekt zu entfernen, dass noch in Nutzung oder bereits entfernt ist,
oder ein Objekt genutzt wird, das bereits entfernt ist.

Wäre so meine spontane Vermutung, falls falsch, bitte korrigieren ^^

MfG

mark332
------------------------------------------------------------
Warum gibt es hier eigentlich kein [SPOILER][/SPOILER] ?

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

Ich hab die Unit mal angefügt
es steht dort

Code: Alles auswählen

 
raise Exception.Create('');
 


@mark: das irritierende ist, dass die Exception nur auf unserer Windows 2008 Serverfarm auftritt.
Auf dem Laptop, auf dem ich entwickle nicht und auf meinem privaten PC auch nicht.
Dateianhänge
unit1.pas
(519 Bytes) 32-mal heruntergeladen

martin_frb
Beiträge: 510
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Freepascall und Fehler auf Serverfarm

Beitrag von martin_frb »

Ich gehe davon aus das Du den Button geklickt hast?

Dann ist die Exception aber erwartet, und sollte kommen.

Allerdings gibt das keinen Sinn mit "beim beenden der Application"...

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

Das ist ja das, was mich völlig in den Wahnsinn treibt.
Wenn das beim Freigeben von Adressraum beim Beenden der Applikation entsteht und ein Berechtigungsproblem ist, wie man hier schon vermutet hat, warum dann nicht beim reservieren des Adressraums.
Vielleicht wurde der Adressraum gar nicht in Anspruch genommen, der versucht wird frei zu geben.

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

Hm...
Ich hab jetzte einen Test auf einen virtuellen Windows 2008 Server, der mir von der IT eingerichtet wurde, sowie auf einem physikalischen Windows 2008 Server, der ausschließlich eine Datenbank-Applikation zur Verfügung stellt, gemacht.
Auf beiden Maschinen läuft das Programm ohne Fehlermeldung. Der Fehler tritt ausschließlich auf der Serverfarm auf.
Aber wohl gemerkt, ich hab noch einige ältere Delphi 2005 Programme, die ich mal für mich privat erstellt habe, auf der Serverfarm getestet und die laufen auch Fehlerfrei.
Allerdings kann ich das nicht durch neue Kompilate nachvollziehen, da mir kein Delphi mehr zur Verfügung steht.

martin_frb
Beiträge: 510
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Freepascall und Fehler auf Serverfarm

Beitrag von martin_frb »

Ronny58 hat geschrieben:Ich hab die Unit mal angefügt
es steht dort

Code: Alles auswählen

 
raise Exception.Create('');
 



Dieser trace hat mit dem ursprünglichen Probelm nix zu tun oder?

Hier wird ja bewusst, und gewollt eine Exception ausgeloesst. Und NICHT beim schliessen der APP, sondern beim ButtonClick.

Im original hattest du laut deinem angehaengtem ScreenShot eine AccessViolation....

Hast Du die Zeile dafuer gefunden?

-----------------------
Compiliere die App mal mit -gh -gttt (mit ein bis 4 t)und teste auf deinem lokalen Rechner.

Vielleicht gibst du ein Object 2 mal frei, oder Du gibst es frei, obwohl du es nie erzeugt hast.
Solche Fehler stuerzen dann "zufaellig" ab oder nicht ab. Je nach dem was zufaellig im Speicher steht.

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

Dieser trace hat mit dem ursprünglichen Probelm nix zu tun oder?

Nein, hat damit nichts zu tun
Im original hattest du laut deinem angehaengtem ScreenShot eine AccessViolation....

Jup, und nicht nur eine, sonder mehr als 15 Fehlerdialog nach einander weg zu klicken. Treten ja auch bei dem simplen Programm, dass nur eine leere Form zur Verfügung stellt genauso wie bei komplexeren Programmen auf. Und zwar jedes mal nach dem Schließen des Main-Dialogs über das X-Symbol rechts oben.
Hast Du die Zeile dafuer gefunden?

hab schon mal angefangen in die Includes zu schauen. Hab aber bisher keine Erkenntnis ableiten können. Nächste Woche hab ich Urlaub. Da hab ich dann kein Tagesgeschäft mehr, dass mich von dem Thema abhält. Dann kann ich mich intensiver damit beschäftigen.
Compiliere die App mal mit -gh -gttt (mit ein bis 4 t)und teste auf deinem lokalen Rechner.

probier ich noch aus.
Ich würde zu gerne mal ein Delphi-Kompilat einer blanken Form testen. Ob es da wohl auch zu diesen Fehler kommt, oder nicht. Wie gesagt meine älteren Delphi 2005 Programme machen keine Fehler. Ich hab aber noch niemand gefunden, der ein aktuelles Delphi hat.
Hab mir schon überlegt, ob ich die 32-Bit-Version von Lazarus/Free Pascal mal ausprobiere.

martin_frb
Beiträge: 510
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Freepascall und Fehler auf Serverfarm

Beitrag von martin_frb »

Treten ja auch bei dem simplen Programm, dass nur eine leere Form zur Verfügung stellt genauso wie bei komplexeren Programmen auf


Ah, das hatte ich auch überlesen...
Also gaenzlich ohne Code von Dir?


Frage: Ist das ein 64 bit Windows? Und eine 64 bit app?

Wenn ja: SEH http://wiki.lazarus.freepascal.org/Wind ... for_SEH.29

Ronny58
Beiträge: 73
Registriert: So 27. Apr 2014, 20:35

Re: Freepascall und Fehler auf Serverfarm

Beitrag von Ronny58 »

Ja, alles Systeme auf denen ich arbeite sind 64-Bit-Systeme. Server, Laptop, privater PC.
Ich bin mir sicher, dass es mit der Server-Farm zusammen hängt, da es ja nur dort auftritt. Nochmals zu der Systemumgebung, auf der die Fehler auftreten.
Es sind ca 18 Windows 2008 Server. Angesteuert und verwaltet werden diese über Citrix und soweit ich weiß VPN-Tunnel. Bei der Anmeldung auf der Serverfarm entscheidet Citrix, auf welchem Server man seine Workbench erhält. Dort tummeln sich dann eine bestimmte Anzahl von Anwendern. Der einzelne Arbeitsplatz wird dann von Citrix generiert. Auf die Serverfarm sind geschätzt mehr als 500 Anwender verteilt.
Primär bekommt jeder Anwender dort die Office-Produktpalette, eine Vielzahl von SAP-Systemen inkl. BW, sowie unser MIS (Frontend) als Standard-Applikationen angeboten.
Ich administriere unser Management Informationssystem. Wir bekommen aus unterschiedlichsten Quellen Daten, die ich in unser MIS importiere (SAP-CO, SAP-BW u.v.m).
Und eben für den Zweck, diese Massen von Daten zu verwalten, evtl. zu konvertieren, benötige ich diese Tools. Auch zur Verwaltung und Pflege der Kostenstellenstrukturen. Sogar dringend.
Einen Teil erledige ich über Excel-VBA. Aber gerade Konvertierungen von Massendaten sind in Excel echter Schwachsinn.
Zum Anfang des Jahres haben wir das Model unserer Rechnungslegung umgestellt. Hätte ich die Umberwertungen mit Excel versucht (was ich zuerst auch tat), wäre das Programm geschätzt 3 Wochen gelaufen :D.
Da muss ich mir zwingend mit performanteren Werkzeugen helfen. An unsere IT kann ich mich nicht wenden. So richtige Hacker haben wir da nicht mehr, nur ABAP, .Net und Script Programmierer.
Ich meine, meine Programme laufen ja einwandfrei. Nur beim beenden der Applikationen tritt diese Masse von Fehlerdialogen auf. Und da ich nicht alleine administriere und auch anderen meine Programme zur Verfügung stelle, kann ich das niemand anbieten, elendig viele Fehlermeldungen weg zu klicken.
Wäre auch hilfreich, wenn ich beim OnClose-Ereignis sagen könnte unterdrücke alle Fehlermeldungen. Wäre zwar nicht sauber, aber wenn gar nichts anderes geht...

Antworten