-
heilong (21.11.08 11:46) [0]В принципе везде рекомендуют использовать так
uses fastmove, fastmm4, ...;
Однако fastmm возмущается что он не первый и выпадает. Вопрос в том что если использовать
uses fastmm4, fastmove, ...;
fastmove будет перехватывать move?
И еще по fastmm, в логе проекта KOL, кроме других ошибок встречается вот такая:
409280 [fastmm4.pas][FastMM4][CheckBlocksOnShutdown][7637]
409FE2 [fastmm4.pas][FastMM4][FinalizeMemoryManager][8691]
40A02A [fastmm4.pas][FastMM4][Finalization][8772]
403B33 [System][FinalizeUnits]
403B4B [System][FinalizeUnits]
403DCE [System][@Halt0]
7C817067 [Unknown function at RegisterWaitForInputIdle]
вроде как fastmm заглючил, кто-нить сталкивался с этим? -
exero (21.11.08 14:08) [1]Во всех проектах на КОЛ использовал FASTMM4, FastCode, FastMove. FastMove будет перехватывать - не волнуйтесь ). Что касается ошибок - ни разу такого не получал.
-
heilong (21.11.08 16:51) [2]exero: а какие ты настройки поменял в FastMM4Options.inc? и зачем?
-
exero (24.11.08 07:34) [3]heilong: Align16Bytes - разрешил - т.к. в FastCode много используются SSE. UseCustomVariableSizeMoveRoutines - убрал, т.к. использую FastMove. Там же все разжевано - что когда включать/выключать!
PS. Учимся обращаться к незнакомому собеседнику на вы. -
heilong (24.11.08 10:16) [4]FastMM обнаружил ошибку во время сканирования освобожденного блока операция. FastMM обнаружил что блок был модифицирован после его освобождения.
Размер предыдущего блока был: 176
This block was previously allocated by thread 0x10C, and the stack trace (return addresses) at the time was:
402B7C [system.pas][System][@GetMem][2439]
41A9AC [Common.pas][Common][Common][435]
403BA3 [system.pas][System][InitUnits][10845]
403C0B [system.pas][System][@StartExe][10910]
7C817067 [Unknown function at RegisterWaitForInputIdle]
Выделенный номер был: 86
The block was previously freed by thread 0x10C, and the stack trace (return addresses) at the time was:
402BA7 [system.pas][System][@FreeMem][2466]
41A92D [Common.pas][Common][Finalization][453]
403B33 [system.pas][System][FinalizeUnits][10704]
403DCE [system.pas][System][@Halt0][11374]
7C817067 [Unknown function at RegisterWaitForInputIdle]
The current thread ID is 0x10C, and the stack trace (return addresses) leading to this error is:
4091CC [fastmm4.pas][FastMM4][CheckBlocksOnShutdown][7637]
409F2E [fastmm4.pas][FastMM4][FinalizeMemoryManager][8691]
409F76 [fastmm4.pas][FastMM4][Finalization][8772]
403B33 [system.pas][System][FinalizeUnits][10704]
403DCE [system.pas][System][@Halt0][11374]
7C817067 [Unknown function at RegisterWaitForInputIdle]
initialization
common(435):
mycon := NewhlMyLib;
finalization
common(453):
mycon.Free;
Внутри класса динамичечки загружается/выгружается libmysql.dll. Все равно непонятно что происходит с fastmm. Ни у кого идей нет?
PS. to exero: sorry for familiarity -
exero (24.11.08 10:52) [5]А dll только подгружается/выгружается или выделяете память - которую потом передаете этой либе? На всякий случай попробуйте $define AssumeMultiThreaded
-
heilong (24.11.08 11:00) [6]только подгружается:
DLLHandle := SafeLoadLibrary(PChar(ClientDLL));
освобождается классически:
FreeLibrary(DLLHandle); -
exero (24.11.08 11:16) [7]а если либу не загружать/выгружать - сообщение остается?
-
heilong (24.11.08 11:56) [8]нашел, в деструкторе:
inherited;
FDLLHandle := 0;
FDLLHandle это поле класса. Так сказать правил несуществующее поле.
Сбило с толку что ругался fastmm сам на себя. Спасибо за помощь.