Mac OSX FMX TMSQuery AV and crash reading image from broken connection

Discussion of open issues, suggestions and bugs regarding SDAC (SQL Server Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
witzl
Posts: 14
Joined: Fri 21 Apr 2017 10:01

Mac OSX FMX TMSQuery AV and crash reading image from broken connection

Post by witzl » Tue 30 Jan 2018 16:59

Hi,

Using my FMX-App I am fetching records from a remote SQL-Server to save them in a local database on my Mac. This might take several minutes ...


Situation 1, "select ID, Match, Image from Pictures':
When the connection to the SQL-Server breaks while fetching records an AV occurs on the Mac in my Firemonkey App and also it closes unexpectedly (see my code for comments) and message from PAServer: "Exception EInvalidOp in Modul Project10 at 0003B8AF, Invalid Floatingpoint-operation.


Situation 2, "select ID, Match from Pictures":
When the connection to the SQL-Server breaks while fetching records and CPU% goes to 99.7% on the Mac in my Firemonkey App and it hangs for ever.

MAC: OSX 10.13.2
Delphi: TOKYO 10.2.2
SDAC: 8.04

Code: Select all

procedure TForm14.ButtonRunClick(Sender: TObject);
var
  MSConnection : TMSConnection;
  MSQuery      : TMSQuery;
  i            : Integer;
begin

  MSConnection                              := TMSConnection.Create(self);
  MSConnection.ConnectionTimeout            := 5;
  MSConnection.Server                       := 'SQLServer';
  MSConnection.Username                     := 'User';
  MSConnection.Password                     := 'Password';
  MSConnection.Database                     := 'Database';
  MSConnection.LoginPrompt                  := false;
  MSConnection.Options.Provider             := prDirect;
  MSConnection.Options.AllowImplicitConnect := false;

  MSQuery                       := TMSQuery.Create(self);
  MSQuery.Connection            := MSConnection;
  MSQuery.Options.QueryRecCount := true;
  MSQuery.SmartFetch.Enabled    := true;
  MSQuery.SQL.Text              := 'select ID, MATCH, Image from PICTURE';
  MSQuery.KeyFields             := 'ID';

  i := 0;

  try
    MSConnection.connected := true;
  except
    MSQuery.Active         := false;
    MSConnection.connected := false;

    Memo1.Lines.add('Error Connection.Open');
    abort;
  end;

  try
    MSQuery.Active         := true;
    Progressbar1.Max       := MSQuery.RecordCount;
  except
    MSQuery.Active         := false;
    MSConnection.connected := false;

    Memo1.Lines.add('Error Query.Open');
    abort;
  end;

  try
    MSQuery.First;
  except
    MSQuery.Active         := false;
    MSConnection.connected := false;

    Memo1.Lines.add('Error Query.First');
    abort;
  end;

  while i < Progressbar1.Max do begin

    try
      // AV occurs when I manually break the Connection by closing the VPN
      label1.Text := MSQuery.FieldByName('Match').AsString;
    except
      MSQuery.Active         := false;
      MSConnection.connected := false;

      Memo1.Lines.add('Error reading Query.Match');
      // here programm quits unexpectedly
      abort;
    end;

    try
      MSQuery.Next;
    except
      MSQuery.Active         := false;
      MSConnection.connected := false;

      Memo1.Lines.add('Error Query.Next');
      abort;
    end;

    inc(i);
    ProgressBar1.Value := i;
    Application.ProcessMessages;

  end;

end;


Stellar
Devart Team
Posts: 496
Joined: Tue 03 Oct 2017 11:00

Re: Mac OSX FMX TMSQuery AV and crash reading image from broken connection

Post by Stellar » Mon 19 Feb 2018 08:04

Unfortunately, we could not reproduce the issue with AV on macOS High Sierra 10.13.2 when the connection with the server was disconnected while data was being retrieved. Please provide us with the table creation script.

Post Reply