![]() |
Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9) ein
Hallo,
ich bin gerade dabei ein groeßeres Projekt von Delphi 2007 auf Delphi 2010 (Demo) zu portieren. Wenn ich versuche das Projekt mit dem Debugger auszufuerhen (F9) friert die IDE fast immer ein. Im Kompatibilitaetsmodus mit Vista SP2 und Administratorrechten scheint das Probleme seltener aufzutreten, koennte aber auch nur Zufall sein. Grueße, Win32 |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Hi,
Zitat:
Das ![]() Gruß Patrick |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
schon mal probiert das programm mit f7 starten zu lassen und zu sehen was da passiert? dass es vielleicht am programm selbst liegt? (will ich nicht hoffen ;) )
was für antiviren-system hast du drauf? evtl. wird delphi ja als intruder "erkannt", geblockt und bleibt dadurch stehen? das wären meine ersten gedanken zum problem... |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Zitat:
|
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Suche eine Downloadmöglichkeit für Windows 7. Habe bei Microsoft.com gesucht, aber nichts gefunden. Es gibt da nur noch die Keys zum freischalten.
Weis jemand, woher ich eine Beta- oder Testversion von Windows 7 bekomme? |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Zitat:
|
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Zitat:
Schadeeeeeee. Na ja. Warte ich bis es im Laden steht. |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Zitat:
![]() |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
du kannst eine 90Tage Testversion von Windows 7 Enterprise (RTM) herunterladen:
![]() einfach mit dem integriertem Schlüssel aktivieren und dann hast du 90 Tage Zeit um mit Windows 7 zu spielen. // d'oh zu langsam :cry: |
Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
Danke fuer die Antworten, aber der Patch hat keine besserung gebracht und die Firewall/AV blockieren Delphi in keinster Weise, ABER der Tipp mit F7 bringt mich ein Stueck weiter. Die IDE friert nicht direkt ein, sondern in der unit idThread in Zeile 351 (TIdThread.Execute):
Delphi-Quellcode:
F8/F9 nach dem BP friert die IDE ein, steppe ich hingegen mit F7 weiter komme ich bis IdCustomTCPServer Zeile 933 (TIdListenerThread.Run):
try
if Loop then begin while not Stopped do begin try Run; <<<<<<<<< except on E: Exception do begin if not HandleRunException(E) then begin Terminate; raise; end; end; end; end;
Delphi-Quellcode:
Steppe ich hier wiederum mit F7 weiter komme ich bis IdServerIOHandlerSocket Zeile 131 (TIdServerIOHandlerSocket.Accept):
try
// GetYarn can raise exceptions LYarn := Server.Scheduler.AcquireYarn; LIOHandler := Server.IOHandler.Accept(Binding, Self, LYarn); <<<<<<<<< if LIOHandler = nil then begin // Listening has finished Stop; Abort; end else begin // We have accepted the connection and need to handle it LPeer := TIdTCPConnection.Create(nil); LPeer.IOHandler := LIOHandler; LPeer.ManagedIOHandler := True; end;
Delphi-Quellcode:
Danach gehts hierhin: IdSocketHandle Zeile 535:
while not AListenerThread.Stopped do begin
if ASocket.Select(250) then begin <<<<<<<<<< if LIOHandler.Binding.Accept(ASocket.Handle) then begin LIOHandler.AfterAccept; Result := LIOHandler; LIOHandler:=nil; Break; end; end; end;
Delphi-Quellcode:
function TIdSocketHandle.Select(ATimeOut: Integer = IdTimeoutInfinite): Boolean;
begin Result := FReadSocketList.SelectRead(ATimeOut); <<<<< TIdAntiFreezeBase.DoProcess(Result = False); end; Anschließend hierher: IdStackWindows Zeile 995:
Delphi-Quellcode:
Gleiche Unit Zeile 1013 (TIdSocketListWindows.FDSelect):
function TIdSocketListWindows.SelectRead(const ATimeout: Integer): Boolean;
var LSet: TFDSet; begin // Windows updates this structure on return, so we need to copy it each time we need it GetFDSet(LSet); FDSelect(@LSet, nil, nil, ATimeout); <<<<<<< Result := LSet.fd_count > 0; end;
Delphi-Quellcode:
Und letzendlich laden wir hier in IdWinsock2 Zeile 5228 (Stub_select):
class function TIdSocketListWindows.FDSelect(AReadSet, AWriteSet,
AExceptSet: PFDSet; const ATimeout: Integer): Boolean; var LResult: Integer; LTime: TTimeVal; LTimePtr: PTimeVal; begin if ATimeout = IdTimeoutInfinite then begin LTimePtr := nil; end else begin LTime.tv_sec := ATimeout div 1000; LTime.tv_usec := (ATimeout mod 1000) * 1000; LTimePtr := @LTime; end; LResult := IdWinsock2.select(0, AReadSet, AWriteSet, AExceptSet, LTimePtr); <<<<<<< Result := GBSDStack.CheckForSocketError(LResult) > 0; end;
Delphi-Quellcode:
Hier ist mit Sourcecode Schluss, weiter gehts in der CPU-Ansicht:
function Stub_select(nfds: Integer; readfds, writefds, exceptfds: PFDSet; timeout: PTimeVal): Integer; stdcall;
begin @select := FixupStub(hWinSockDll, 'select'); {Do not Localize} Result := select(nfds, readfds, writefds, exceptfds, timeout); <<<<<<< end; Freeze bei
Code:
[$00617b18] ist WS2_32.select. Hier friert die IDE beim ersten call ein:
004D759F FF15187B6100 call dword ptr [$00617b18]
Code:
In diesem call passiert eigentlich nichts, keine calls/jmps oder aenhliches. Es wir nur ein bisschen in Speicher rumgeschrieben.
76364988 E803CAFFFF call $76361390
Steppe ich mit F8 ueber diesen call friert die IDE ein. Steppe ich mit F7 durch den call durch komme ich zum naechsten lock:
Code:
Danach haengt es hier:
76364A1D FF5060 call dowrd ptr [eax+$60]
Code:
Hier findet man wieder nur Speicherzugriffe, keinerlei calls oder jmps ... Die Spur verlaeuft sich im Sand.
743D6572 E848B1FFFF call $743d16bf
Grueße, Win32 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz