Конференция "KOL" » использование fastmove с fastmm4 [Delphi, Windows]
 
  • 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 сам на себя. Спасибо за помощь.
 
Конференция "KOL" » использование fastmove с fastmm4 [Delphi, Windows]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]