Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9) ein (https://www.delphipraxis.net/140075-windows7-64bit-und-d2010-ide-friert-beim-ausfuehren-f9-ein.html)

Win32.API 11. Sep 2009 10:52


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

holliesoft 11. Sep 2009 11:05

Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
 
Hi,

Zitat:

Zitat von Win32.API
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

Ich hatte unter Windows 7 64bit auch erst Probleme mit dem Debugger, die ich durch einen hier in der DP gefundenen Patch einer Datei beheben konnte.
Das Hier im Forum suchenIDE Fix Pack von jbg hat laut Changelog ab Version 2.7 auch einen Fix für dieses Problem an Board.

Gruß
Patrick

s.h.a.r.k 11. Sep 2009 11:08

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...

jbg 11. Sep 2009 11:27

Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
 
Zitat:

Zitat von holliesoft
Das Hier im Forum suchenIDE Fix Pack von jbg hat laut Changelog ab Version 2.7 auch einen Fix für dieses Problem an Board.

Aber nur für Delphi 2007 und 2009. Bei Delphi 2010 hat Embarcadero den zu patchende Stelle selbst entfernt.

bernau 11. Sep 2009 11:29

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?

jfheins 11. Sep 2009 11:31

Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
 
Zitat:

Zitat von bernau
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?

Offiziell: Gar nicht mehr. Der Download des RC wurde ende August entfernt ;)

bernau 11. Sep 2009 11:37

Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
 
Zitat:

Zitat von jfheins
Offiziell: Gar nicht mehr. Der Download des RC wurde ende August entfernt ;)


Schadeeeeeee.

Na ja. Warte ich bis es im Laden steht.

fred.ahrens 11. Sep 2009 11:48

Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
 
Zitat:

Zitat von bernau
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?

eventuell kannst Du eine Trial hier bekommen

MagicAndre1981 11. Sep 2009 11:55

Re: Windows7 64Bit und D2010: IDE friert beim Ausfuehren(F9)
 
du kannst eine 90Tage Testversion von Windows 7 Enterprise (RTM) herunterladen:

http://technet.microsoft.com/de-de/e...?ITPID=wtcfeed

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:

Win32.API 11. Sep 2009 12:31

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:
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;
F8/F9 nach dem BP friert die IDE ein, steppe ich hingegen mit F7 weiter komme ich bis IdCustomTCPServer Zeile 933 (TIdListenerThread.Run):


Delphi-Quellcode:
  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;
Steppe ich hier wiederum mit F7 weiter komme ich bis IdServerIOHandlerSocket Zeile 131 (TIdServerIOHandlerSocket.Accept):

Delphi-Quellcode:
  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;
Danach gehts hierhin: IdSocketHandle Zeile 535:

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:
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;
Gleiche Unit Zeile 1013 (TIdSocketListWindows.FDSelect):

Delphi-Quellcode:
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;
Und letzendlich laden wir hier in IdWinsock2 Zeile 5228 (Stub_select):

Delphi-Quellcode:
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;
Hier ist mit Sourcecode Schluss, weiter gehts in der CPU-Ansicht:

Freeze bei
Code:
004D759F FF15187B6100     call dword ptr [$00617b18]
[$00617b18] ist WS2_32.select. Hier friert die IDE beim ersten call ein:

Code:
76364988 E803CAFFFF      call $76361390
In diesem call passiert eigentlich nichts, keine calls/jmps oder aenhliches. Es wir nur ein bisschen in Speicher rumgeschrieben.

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:
76364A1D FF5060 call dowrd ptr [eax+$60]
Danach haengt es hier:

Code:
743D6572 E848B1FFFF      call $743d16bf
Hier findet man wieder nur Speicherzugriffe, keinerlei calls oder jmps ... Die Spur verlaeuft sich im Sand.

Grueße,
Win32


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.
Seite 1 von 2  1 2      

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