TDaemon Minimalbeispiel crasht [SOLVED]

Für Fragen von Einsteigern und Programmieranfängern...
Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

TDaemon Minimalbeispiel crasht [SOLVED]

Beitrag von Eclipticon »

Hi,

ich bastle gerade an einem Systemservice fuer Windows und verwende dazu die TDaemon-Klasse ... aber selbst ein Minimalbeispiel (siehe Attachment) stuerzt immer ab, wenn es aufgerufen wird.
  • DaemonTest.exe -i und DaemonTest.exe -u zum Installieren/Deinstallieren des Services funktionieren
  • "Starten" in "Dienste" endet mit der Warnung "Der Dienst ... auf "Lokaler Computer" konnte nicht gestartet werden. Fehler 3: Das System kann den angegebenen Pfad nicht finden". (Der Pfad enthaelt keine Leer- oder Sonderzeichen.)
  • Starten mit DaemonTest.exe -r von der Command line fuehrt nach einigen Sekunden zu "An unhandled Exception occured at ... EAccessViolation".
Was mache ich hier falsch? Mir ist schon klar, dass in dem Code kein einziger Eventhandler eingehaengt ist, aber auch das sollte doch mit Assigned() ueberprueft werden ... wenn es denn ueberhaupt was mit dem Problem zu tun hat.

Weiters wollte ich fragen, ob es noch einen einfacheren (?) Ansatz gibt, ein Systemservice zu schreiben ... ein Unix-Daemon macht in diesem speziellen Fall ohnehin keinen Sinn ...

Danke und schoenen Abend :-)
Dateianhänge
Daemon.zip
(3.04 KiB) 92-mal heruntergeladen
Zuletzt geändert von Eclipticon am Mo 24. Okt 2011, 23:10, insgesamt 1-mal geändert.

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Ist es tatsaechlich moeglich, dass sich noch niemand damit beschaeftigt hat oder niemand dieses Problem reproduzieren kann?

gsa
Beiträge: 9
Registriert: Fr 13. Jun 2008, 15:23
OS, Lazarus, FPC: Windows / Linux (FPC 3.2. fixes, Lazarus 3.0 fixes / trunk)

Re: TDaemon Minimalbeispiel crasht

Beitrag von gsa »

Eclipticon hat geschrieben:Ist es tatsaechlich moeglich, dass sich noch niemand damit beschaeftigt hat ...
Nicht mit FPC/Lazarus, mit dem Thema habe ich gerade unter C# angefangen.
Eclipticon hat geschrieben:... oder niemand dieses Problem reproduzieren kann?
Dein Code läuft bei mir ohne Probleme. Meine Konfiguration:

Windows XP SP3 / Lazarus 0.9.31 r32863M FPC 2.4.4 i386-win32-win32/win64

Gruß Gerd

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Hi Gerd,

danke fuer den Tip ... ich habe es auch mal mit der 0.9.31 und 2.4.4 ausprobiert, an dem Problem aendert sich leider nichts.

Ich habe auch c:\lazarus\fpc\2.4.2\source\packages\fcl-base\examples\daemon.pp verwendet, hier wird ein Service nicht ueber visuelle Komponenten sondern zu Fuss erzeugt ... gleiches Ergebnis. (Wenn man {$apptype gui} entfernt ... was hat das dort verloren?)

Ich frage mich, wie ich jetzt am besten eingrenzen kann, was diese EAccessViolation bei mir ausloest und bei anderen nicht ...

Danke fuer Euren Input ...

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

Re: TDaemon Minimalbeispiel crasht

Beitrag von af0815 »

Sind die Rechte für den Prozess überhaupt vorhanden ?!

Was mir dazu einfällt, ist Security und Firewall.

Was sagt das SystemLOG, SecurityLOG und ev. ein Log des Firewalls.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Hi,
af0815 hat geschrieben:Sind die Rechte für den Prozess überhaupt vorhanden ?!

Was mir dazu einfällt, ist Security und Firewall.

Was sagt das SystemLOG, SecurityLOG und ev. ein Log des Firewalls.
ich entwickle auf einer virtuellen Maschine ohne Netzwerkanbindung, daher mit einem Admin-Account und ohne Firewall (die fuer das Funktionieren dieses Testbeispiels auch keinen Unterschied machen sollte).

In der Ereignisanzeige/System, Anwendung und Security findet sich leider kein Wort zu diesem Service ...

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

Re: TDaemon Minimalbeispiel crasht

Beitrag von af0815 »

Eclipticon hat geschrieben: ich entwickle auf einer virtuellen Maschine ohne Netzwerkanbindung, daher mit einem Admin-Account und ohne Firewall (die fuer das Funktionieren dieses Testbeispiels auch keinen Unterschied machen sollte).

In der Ereignisanzeige/System, Anwendung und Security findet sich leider kein Wort zu diesem Service ...
Der Dienst läuft normalerweise nicht im Securitybereich des Admin. Es läuft im Accountbereich des 'local systems'. Das Service ist nach der Installation im Servicemanager mit dem richtigen Pfad sichtbar ? Ist der Pfad auch für den Account securitymässig erreichbar und ausführbar ? In der VM kannst mal das Service Testweise auf einen Account mit mehr Rechten legen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Hi,
af0815 hat geschrieben:Der Dienst läuft normalerweise nicht im Securitybereich des Admin. Es läuft im Accountbereich des 'local systems'. Das Service ist nach der Installation im Servicemanager mit dem richtigen Pfad sichtbar ? Ist der Pfad auch für den Account securitymässig erreichbar und ausführbar ? In der VM kannst mal das Service Testweise auf einen Account mit mehr Rechten legen.
danke fuer den Hinweis.

Ich hab' die Anmeldung des Services auf meinen Account (mit Adminrechten) geaendert - macht keinen Unterschied. Es haette vermutlich auch die Exception nicht erklaert, die ich beim Starten von der Kommandozeile aus mit -r bekomme ...

Und ja, der Pfad ist richtig im Servicemanager eingetragen ... und enthaelt keine Leerzeichen oder dergleichen mehr.

Ob der Pfad nun fuer LOCAL SYSTEM erreichbar ist oder nicht kann ich nicht wirklich testen, da ich keine Kommandozeile/Explorer als dieser User starten kann ... oder?

Zum Haareraufen ...

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

Re: TDaemon Minimalbeispiel crasht

Beitrag von af0815 »

Ok, mal das ganze in einer 'fast neuen' VM getestet (extra Lazarus dort installiert). Läuft ohne Probleme. Lässt sich installieren, starten. Exakt DEINE Sourcen vom ersten Beitrag. Laz 0.9.30.2RC1, FPC 2.4.4
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Oh, danke fuer den Aufwand ... darf ich noch fragen, ob das WinXP oder Win7 war?

Und ich verabschiede mich jetzt, auch eine "saubere" VM einrichten ...

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

Re: TDaemon Minimalbeispiel crasht

Beitrag von af0815 »

Eclipticon hat geschrieben:Oh, danke fuer den Aufwand ... darf ich noch fragen, ob das WinXP oder Win7 war?
Und ich verabschiede mich jetzt, auch eine "saubere" VM einrichten ...
WinXP Pro SP3 engl. (Multilang)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Darf ich noch fragen, ob Du das Beispiel mit Servicemanager > Start oder auf der Kommandozeile mit ...exe -r getestet hast?

Mit einem frischen Win7 bekomme ich im Service Manager auch keine Fehlermeldung mehr (muss allerdings den Prozess erst umbauen, damit er sich irgendwie bemerkbar macht, wenn er wirklich laeuft), aber mit -r gibt's die gleiche EAccessViolation.

Vielleicht ist es aber auch eine Frage irgendwelcher Compilerswitches, die ich habe?!?

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

Re: TDaemon Minimalbeispiel crasht

Beitrag von af0815 »

Eclipticon hat geschrieben:Darf ich noch fragen, ob Du das Beispiel mit Servicemanager > Start oder auf der Kommandozeile mit ...exe -r getestet hast?
Servicemanager > Start
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TDaemon Minimalbeispiel crasht

Beitrag von Eclipticon »

Kurz bevor ich komplett wahnsinnig wurde:

Service vom VB Shared Folder ("E:") auf C: kopiert, neu installiert, funktioniert. Warum auch immer.

Danke fuer die Hilfe und das Testen, sonst haette ich mein Vertrauen in die Klasse schon aufgegeben ...

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:

Re: TDaemon Minimalbeispiel crasht [SOLVED]

Beitrag von Christian »

Naja schon irgendwie verständlich, das das System einen Service von einem beim Start nicht existenten Netzwerklaufwerk nicht installieren will.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten