Что может быть причиной получения нарушения прав доступа от borlndmm.dll при закрытии clientdataset в delphi rio - PullRequest
0 голосов
/ 05 февраля 2019

Я перенес приложение delphi 7 в delphi rio.Для некоторых форм я получаю нарушение прав доступа от borlndmm.dll при попытке закрыть клиентский набор данных в форме.

Моя база данных - Firebird 2.5 и кодировка UTF8.В клиентских наборах данных есть проблема с полями BLOB-объектов и некоторыми стандартными полями, такими как widestring, float и так далее.Странно, но я получаю ошибку иногда для первой попытки, иногда для второй или третьей.Также после развертывания приложения оно работает без проблем на большинстве машин.Но на некоторых машинах существует эта проблема, и они получают нарушение прав доступа от borlndmm.dll.После нажатия этой ошибки ntdll.dll также вызывает нарушение прав доступа.Когда я выполняю трассировку из delpi rio, я получаю нарушение прав доступа в процедуре FreeKeyBuffers класса TSClientDataSet.

Стек вызовов:

:50039a5f borlndmm.@Borlndmm@SysFreeMem$qqrpv + 0x17
Data.DB.TDataSet.CloseCursor
Datasnap.DBClient.TCustomClientDataSet.CloseCursor
Data.DB.TDataSet.SetActive(???)
Data.DB.TDataSet.Close
frmuXFlatForm.TfrmXFlatForm.FormDestroy($57AF960)
frmuDBXBoyaRaporGridli.TfrmDBXBoyaRaporGridli.FormDestroy($57AF960)
Vcl.Forms.TCustomForm.DoDestroy
Vcl.Forms.TCustomForm.Destroy
System.TObject.Free
Vcl.Forms.TCustomForm.CMRelease(???)
Vcl.Controls.TControl.WndProc((45089, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((45089, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((45089, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(1246890,45089,0,0)
:7709bf1b ; C:\Windows\SysWOW64\USER32.dll
:770983ea ; C:\Windows\SysWOW64\USER32.dll
:77077afd USER32.CallWindowProcW + 0x8d
TFlatTitlebarUnit.TFlatTitlebar.FormWndProc((45089, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()))
System.Classes.StdWndProc(1246890,45089,0,0)
:7709bf1b ; C:\Windows\SysWOW64\USER32.dll
:770983ea ; C:\Windows\SysWOW64\USER32.dll
:77097c9e ; C:\Windows\SysWOW64\USER32.dll
:77097a80 USER32.DispatchMessageW + 0x10
...