Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Stackoverflow Fehler bei SQL.Active := True

  Alt 9. Jul 2007, 22:17
Hallo,

hab mal in ein sample-projekt ein wenig reingedebuggt. und tatsächlich rekursiert sich das ADS zu tode.

Er springt immer wieder in TAdsQuery.OpenAdvantageFiles.

Und zwar sehr zuverlässig

Er springt von OpenAdvantageFiles zuerst nach InternalExecute. Dann nach SetParamsFromCursor. Dort greift er auf... DataSet.FieldDefs zu und merkt anscheinend, dass er das initialisieren muss: TAdsDataSet.InitFieldDefs. und von dort ruft er dann... tadaaa! OpenAdvantageFiles auf.

und zwar aufgrund anscheinend einer validierung:

Delphi-Quellcode:
{  if the table is not active then open a temporary table handle }
   {  otherwise get the active table handle }
   if ( Active ) OR ( Handle <> INVALID_ACE_HANDLE ) then
   begin
      bTempHandle := False;
      hHoldHandle := self.Handle;
   end
   else
   begin
      bTempHandle := True;
      hHoldHandle := OpenAdvantageFiles; //böse!
   end;
Active ist halt false... und das handle ist invalide. also hätte man offenbar das irgendwo vorher ändern sollen, kann das sein?

@hoika: ja, an dem häng ich grad dran wie die katze am pressack, wie man bei uns in bayern so schön sagt. ist im moment sozusagen closed source, es sei denn mackhack entscheidet sich zu was anderem.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat