IDE에서 실행할 때 내 앱에서 종료 할 때이 오류가보고됩니다. 보통 프로그램이 실행되는 동안 만들어진 스레드의 각 인스턴스에 대해 하나의 FastMM 걸림돌을 얻지 만이 동작을 특성화하기에 충분히 반복 할 수는 없습니다. 문제는 내가 보고서를 이해할 수 없다는 것입니다.Delphi, FastMM - 해제 된 후 블록이 수정되었습니다. - FastMM 보고서 해석에 도움이 필요합니다.
---------------------------
APP.exe: Memory Error Detected
---------------------------
FastMM has detected an error during a free block scan operation. FastMM detected that a block has been modified after being freed.
The previous block size was: 40
Stack trace of when this block was previously allocated (return addresses):
403052 [APPHardwareDeclarations.pas][System][[email protected]][645]
405F0D [UFlxNumberFormat.pas][System][[email protected]][956]
4065E1 [APPGlobalDeclarations.pas][System][[email protected]][3356]
411AF7 [madStrings][madStrings.WideToAnsiEx]
41ACE8 [madTools][madTools.FindModule]
720074 [RpRenderCanvas][RpRenderCanvas.TRvRenderCanvas.FloodFill]
720074 [RpRenderCanvas][RpRenderCanvas.TRvRenderCanvas.FloodFill]
780065 [UXlsReferences][UXlsReferences.TReferences.SaveToStream]
4AAB2E [ExtCtrls][ExtCtrls.TTimer.Timer]
Stack trace of when the block was previously freed (return addresses):
405E59 [APPSendEmailSMTPQueue.pas][System][[email protected]][494]
406DD3 [APPGlobalDeclarations.pas][System][[email protected]][3584]
406D5D [APPGlobalDeclarations.pas][System][[email protected]][3560]
406E38 [APPGlobalDeclarations.pas][System][[email protected]][3602]
47B6F2 [Classes][Classes.TStringList.Destroy]
404DFF [GIFImage.pas][System][System.TObject.Free][12891]
468741 [SysUtils][SysUtils.FreeAndNil]
506600 [StringUtilities][StringUtilities.AddCommaTextPair]
85C738 [APPLogWebTransactionsQueue][APPLogWebTransactionsQueue.ServiceWebTransactionQueue]
The current stack trace leading to this error (return addresses):
40D04C [FastMM4][FastMM4.CheckBlocksOnShutdown]
40DE88 [FastMM4][FastMM4.Finalization]
4059F3 [GraphicEx.pas][System][System.FinalizeUnits][8123]
458CAA [madExcept][madExcept.InterceptFinalizeUnits]
405CCB [IdCoderXXE.pas][System][[email protected]][85]
924868
7C90DCBA [ZwSetInformationThread]
7C81776F [RegisterWaitForInputIdle]
7C817778 [RegisterWaitForInputIdle]
Current memory dump of 256 bytes starting at pointer address 16902788:
6C 6A 95 00 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 80 80 80 80 D7 D8 6F E9 80 80 80 80 80 80 00 00 41 1E 90 16 00 00 00 00 00 00 00 00
00 00 00 00 52 30 40 00 9B 4D 40 00 11 82 40 00 62 51 40 00 E2 5B 64 00 21 76 64 00 68 77 64 00
12 B0 64 00 AD D6 64 00 6E 30 40 00 B9 4D 40 00 AD 51 40 00 6A 5C 64 00 78 82 40 00 78 35 64 00
83 81 40 00 48 6E 40 00 5D 6D 40 00 28 00 00 00 04 44 64 00 C0 27 90 16 6C 6A 95 00 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
3F D8 6F E9 80 80 80 80 00 00 00 00 40 FF 8F 16 00 00 00 00 00 00 00 00 00 00 00 00 52 30 40 00
0D 5F 40 00 E1 65 40 00 F7 1A 41 00 E8 AC 41 00 74 00 72 00 74 00 72 00 65 00 78 00 2E AB 4A 00
l j • . € € € € € € € € € € € € € € € € € € € € € € € € € € € €
€ € € € € € € € × Ø o é € € € € € € . . A . . . . . . . . . .
. . . . R 0 @ . › M @ . . ‚ @ . b Q @ . â [ d . ! v d . h w d .
. ° d . Ö d . n 0 @ . ¹ M @ . Q @ . j \ d . x ‚ @ . x 5 d .
ƒ @ . H n @ . ] m @ . ( . . . . D d . À ' . l j • . € € € €
€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €
? Ø o é € € € € . . . . @ ÿ . . . . . . . . . . . . . R 0 @ .
. _ @ . á e @ . ÷ . A . è ¬ A . t . r . t . r . e . x . . « J .
이전에 항목이 해제되었을 때의 스택 추적을 취하십시오.
468741 [SysUtils][SysUtils.FreeAndNil]
506600 [StringUtilities][StringUtilities.AddCommaTextPair]
85C738 [APPLogWebTransactionsQueue][APPLogWebTransactionsQueue.ServiceWebTransactionQueue]
모든 합리적이지만, 다음 줄 : 404DFF [GIFImage.pas] [시스템] [System.TObject.Free] [12891] 나 퍼즐. 이 시점에서 Free가 호출 될 것으로 기대되지만, GIFImage.pas
은 무엇입니까? 블록이 이전에 할당되었을 때의 추적은 완전히 무작위입니다. 어떤 항목도 의미가 없습니다. FastMM 설정으로 뭔가 이상하다고 느끼거나 FastMM이 휴지통 메모리에서 스택 추적을 가져 오는 중입니다.
원래 Delphi 2006로 컴파일 한 후에이 문제가있었습니다. Delphi 2007의 완전히 새로운 설치는 동일한 동작을합니다. 아무도 나에게 무슨 일이 일어나는지 말해 줄 수 있니? TIA R
호기심이 없습니다. 프로젝트에서 madExcept를 제거하면 같은 일이 발생합니까? – TLama
메모리 블록을 해제 한 다음 나중에 액세스했습니다. –
나는 FastMM이 제공 한 덤프가 왜 필자가 이유를 찾는데 사용할 수있는 합리적인 정보를 제공하지 않는다는 것을 알고있다. – rossmcm