Периодически возникает ошибка:
AddRefStr failed (D:\Projects\Delphi\Dac\Common\Source\MemData.pas, line 8624)
К сожалению, алгоритм воспроизведения - неизвестен.
Предположительно, при вызове метода Cancel у TOraQuery.
Вариации Call stack:
1. Здесь ошибки не было
Код: Выделить всё
U_ILL.TFrm_ILL.O_ILLBeforeCancel($13A15D20)
:506947ef TDataSet.DoBeforeCancel + $1B
:0546794a TDASQLGenerator.GenerateRefreshSQLFromPart + $A
Код: Выделить всё
:7616c54f KERNELBASE.RaiseException + 0x58
:05b90d09 RaiseExceptionProcHook + $71
:0536bdf2 TStringHeap.ReAllocWideStr + $2
с результирующим сообщением "AddRefStr failed (D:\Projects\Delphi\Dac\Common\Source\MemData.pas)"
Возможно пригодятся данные с CPU
Код: Выделить всё
; Memdata.TStringHeap. (possible DisposeBuf+560) (Line=0 - Offset=560)
; --------------------------------------------------------------------
05C0BDC0 6C INSB
05C0BDC1 006500 ADD [EBP], AH
05C0BDC4 640000 ADD FS:[EAX], AL
05C0BDC7 005356 ADD [EBX+$56], DL
05C0BDCA 85D2 TEST EDX, EDX
05C0BDCC 742A JZ +$2A ; ($05C0BDF8) Memdata.TStringHeap.AddRef (Line=0)
05C0BDCE 8BDA MOV EBX, EDX
05C0BDD0 83C3FE ADD EBX, -2
05C0BDD3 8BC3 MOV EAX, EBX
05C0BDD5 0FB730 MOVZX ESI, WORD PTR [EAX]
05C0BDD8 6683FE65 CMP SI, $65
05C0BDDC 7314 JNB +$14 ; ($05C0BDF2) Memdata.TStringHeap.AddRef (Line=0)
05C0BDDE B924220000 MOV ECX, $00002224
05C0BDE3 BA08BEC005 MOV EDX, $05C0BE08 ; ($05C0BE08) Memdata.TStringHeap. (possible AddRef+64) (Line=0) UNICODE: 'C:\Users\dev15\Documents\!DbgFiles\odac_src\odac101src\ODAC\Source\MemData.pas'
05C0BDE8 B8B4BEC005 MOV EAX, $05C0BEB4 ; ($05C0BEB4) Memdata.TStringHeap. (possible AddRef+236) (Line=0) UNICODE: 'AddRefStr failed'
;
; Memdata.TStringHeap.AddRef (Line=0 - Offset=37)
; -----------------------------------------------
05C0BDED E8BE53FDFF CALL -$02AC42 ; ($05BE11B0->5000B904) System.Assert ; <-- EXCEPTION
05C0BDF2 8BC3 MOV EAX, EBX
05C0BDF4 46 INC ESI
05C0BDF5 668930 MOV [EAX], SI
05C0BDF8 5E POP ESI
05C0BDF9 5B POP EBX
; ------------------
056FBBE2 E8C955FDFF CALL -$02AA37 ; ($056D11B0->5000B904) System.Assert ; <-- EXCEPTION
056FBBE7 6683FB65 CMP BX, $65
056FBBEB 0F8580000000 JNZ +$80 ; ($056FBC71) Memdata.TStringHeap.DisposeBuf (Line=0)
056FBBF1 8BC6 MOV EAX, ESI
056FBBF3 4B DEC EBX
056FBBF4 668918 MOV [EAX], BX
056FBBF7 8BC6 MOV EAX, ESI
056FBBF9 83C0FC ADD EAX, -4
056FBBFC 8B00 MOV EAX, [EAX]
056FBBFE 8D5808 LEA EBX, [EAX+8]
056FBC01 4B DEC EBX
056FBC02 85DB TEST EBX, EBX
056FBC04 7903 JNS +3 ; ($056FBC09) Memdata.TStringHeap.DisposeBuf (Line=0)
056FBC06 83C307 ADD EBX, 7
056FBC09 C1FB03 SAR EBX, 3
056FBC0C 85DB TEST EBX, EBX
056FBC0E 7514 JNZ +$14 ; ($056FBC24) Memdata.TStringHeap.DisposeBuf (Line=0)
Спасибо!