AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Eigener Dienst -> Speicherauslastung wächst und wächst...
Thema durchsuchen
Ansicht
Themen-Optionen

Eigener Dienst -> Speicherauslastung wächst und wächst...

Ein Thema von cherry · begonnen am 14. Apr 2008 · letzter Beitrag vom 7. Mai 2008
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#21

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 21. Apr 2008, 17:11
Zitat von Dezipaitor:
mach getSession raus und nutze stattdessen deinen Benutzername. Wenn es immernoch ein Speicherleck gibt, dann ist es was anderes.
Hab ich gemacht, das Problem scheint schon daran zu liegen. Nehm ich das raus, bleibt die Speicherauslastung mit ca 8'752K stabil...

hab ich was mit trunk update verpasst... ?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#22

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 21. Apr 2008, 22:16
I tested the code and my results on Vista SP1/D2007 are as follows:
Neither Eurekalog nor FastMM detects a memory leak, yet taskmanager shows an increase in memory usage. So there seems to be a memory leak but I am not sure if we are leaking the code in Jwscl or somewhere in an API call.

Could you please indicate your OS version?
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#23

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 09:18
Mein Betriebssystem ist:

Windows XP Professional Version 2002 SP2

...

Ich denke aber ich hab was beim Update der Subversion von JEDI falsch gemacht... respektive beim kompillieren... ich hab danach nur "JWSCL\jedi-api-lib\jwapi\trunk\Packages\bds10\JediApi_Bds10.bdsgr oup" geöffnet und die dort enthaltenen Units neu kompilliert. Nicht aber z.B. die pas Dateien unter: ...\JWSCL\jedi-api-lib\jwscl\trunk\source

muss ich die auch noch? oder muss ich sonst noch was neu kompillieren? oder reicht "JediApi_Bds10.bdsgroup" aus?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#24

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 09:21
XP 2002 SP2 ? hab ich was verpasst?

schau mal in die Unit JwsclUtils.pas und suche nach der Variablen: InternalThreadName . Welchen Typ hat die?

JWSCL wird nicht, wie die JWA einzeln kompiliert.
Man kompiliert die JWA in dcu Dateien nur damit ein Rebuild des Projektes nicht so ewig dauert.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#25

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 09:27
WideString!

threadvar InternalThreadName : WideString; wieso? haste noch ne Idee?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#26

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 11:19
Also bei mir erkennt kein Memorymanager ein Leak. Wenn ich Private Memory Data von einem Testprogramm anschaue, dann sieht man aber einen Anstieg des Speicherverbrauchs. Da kein Memorymanager in Delphi, dieses erkennt, ist meine Schlussfolgerung, dass der Speicher nicht durch die Delphianwendung direkt erzeugt wird (kein Objekt, kein GetMem usw). Da er ja sonst angezeigt werden würde.

Das Problem sind die WTSxxx Funktionen, welche Private Memory resevieren. Obwohl WTSFreeMemory dafür aufgerufen wird, konnte ich nicht sehen, dass Private Memory weniger wurde. Entweder ist das ein Bug von MS, oder ich blicke nicht ganz durch.
Intern ruft WTSFreeMemory auch nur LocalFree auf.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#27

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 15:17
schade, ich denke wir werden nie rauskriegen wo das Problem liegt...

ich versuch das Problem jetz halt so zu umgehen:

Zitat von Dezipaitor:
Du kannst auch schneller an den Benutzernamen der Session 0 herankommen.
Siehe http://blog.delphi-jedi.net/2008/04/...m-a-service-2/
hab das jetzt mal so gemacht:

Delphi-Quellcode:
function TSisterWatch.GetSession: string;
begin
  try
   Token := TJwSecurityToken.CreateCompatibilityQueryUserToken(MAXIMUM_ALLOWED, 'explorer.exe');
   Token.ImpersonateLoggedOnUser;
   //do stuff on user’s behalf
   Result := GetEnvironmentVariable('USERNAME');
  except
   Result := '';
  end;
  Token.RevertToSelf;
  Token.Free;
end;
funktioniert aber leider nicht. Ich hab auch schon probiert mit GetCurrUserName statt mit GetEnvironmentVariable('USERNAME') dort erhalte ich zwar sogar als Dienst den richtigen Username, allerdings ist der String irgendwie korrupt oder viel zu lang oder schneidet mir was ab oder weissnichtwas...

hier noch meine GetCurrUserName funktion... (Vielleicht ist ja nur die falsch...)

Delphi-Quellcode:
function GetCurrUserName: string;
var
  Size : DWORD;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(Result, Size);
  if GetUserName(PChar(Result), Size) then
    SetLength(Result, Size)
  else
    Result := '';
end;
z.b. showmessage('"'+GetSession'"') würde folgendes erzielen: Ausgabe["Username] das an den String angefügte, hier ein ", greifft nicht!

JMD eine Idee?
so kann ich den Benutzername aber auch nicht gebrauchen...

// EDIT:

Kann ich nicht einfach den Username irgendwie aus dem Token bekommen?

...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#28

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 15:42
CreateCompatibilityQueryUserToken sollte man wirklich nur im Ausnahmefall verwenden.

Token := TJwSecurityToken.CreateWTSQueryUserTokenEx(WTS_CURRENT_SERVER_HANDLE, WtsGetActiveConsoleSessionID); ist die beste Variante.

Wenn du schon die Trunkversion hast, dann gibt es dazu die Methode : GetTokenUserName
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#29

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 15:47
hmm...

meinst du nicht eher: CreateWTSQueryUserToken(SessionID: cardinal = INVALID_HANDLE_VALUE); overload; virtual; aber anyway, wo kriege ich die SessionID her?!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#30

Re: Eigener Dienst -> Speicherauslastung wächst und wächs

  Alt 22. Apr 2008, 16:02
die Ex Version funktioniert auch unter Windows 2000.
WtsGetActiveConsoleSessionID gibt die die SessionID vom physisch eingeloggten Benutzer.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz