FastMM4 - проблема из пальца

Общие вопросы по оборудованию и программному обеспечению Компании ДЭП
Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 07 сен 2009, 05:08

И так нарвался на лабуду

И так приложение с убраными компонентами и этой дрянью работает, как тока ставлю просто ваши компоненты, не обращаясь в них всё ругается на аксес виалэйшен, а причина очень проста вряде случаев портит память, в многопоточном приложении !!!!!!!


Вопрос и как быть да ответ прост, нафиг послать его все выходные просидел в трейсере наблюдая за ним ...это же надо чтобы так было :

Код: Выделить всё

TFS_Politica *pol=FUsers->PoliticaByID(Item->Attributes->ByName["ID"]->Value);

разбираю по шагам все функции в одном класе находятся
при вызове функции PoliticaByID("ALL") (Выбор значения нормально прошол)
this= .... чему то там но нормальному адресу
Приходим в функцию
и обоже this=0x0000005
ВАУ, это как ?????

а казалось что просто :


Код: Выделить всё

  lea edx, [eax + BlockHeaderSize - 1]
{$ifdef Align16Bytes}
  shr edx, 4
{$else}
  shr edx, 3
{$endif}
  {Is it a small block?}
  cmp eax, (MaximumSmallBlockSize - BlockHeaderSize)
  {Save ebx}
  push ebx
  {Get the IsMultiThread variable so long}
{$ifndef AssumeMultiThreaded}
  mov cl, IsMultiThread
{$endif}
  {Is it a small block?}
  ja @NotASmallBlock
  {Do we need to lock the block type?}
{$ifndef AssumeMultiThreaded}
  test cl, cl
{$endif}
  {Get the small block type in ebx}
  movzx eax, byte ptr [AllocSize2SmallBlockTypeIndX4 + edx]
  lea ebx, [SmallBlockTypes + eax * 8]
  {Do we need to lock the block type?}
{$ifndef AssumeMultiThreaded}
  jnz @LockBlockTypeLoop
{$else}
  jmp @LockBlockTypeLoop


Уж незнаю как но этот код портит память .... не разбирался и смысла не вижу, вижу тока одно что надо уходить от этого , достали постоянные проблемы в моём коде из за вашего ....

как может съезжать собственный указатель на класс, я не знаю но это факт.

тока не надо просить выслать код его много ! очень много ...


БУДУ сейчас пробовать юзать ваш пример с классом без ваших компонентов хотя и это тоже не вариант.

всётаки вынуждаюсь читать долбаный КОМ и ДКОМ

Dino
Сообщения: 163
Зарегистрирован: 21 фев 2005, 13:18
Откуда: Компания ДЭП

Сообщение Dino » 07 сен 2009, 13:26

Проблем с менеджером памяти FastMM4 никогда не было замечано, включая многопоточные приложения. Начиная с BDS2006 FastMM используется средой разработки CodeGear RAD Studio.
Все же советую Вам более детально отладить свое приложение, так как если приложение многопоточное, то алгоритм его работы очень сильно зависит от временных задержек.
Есть очень большие сомнения в Ваших утверждениях. Хотелось бы все-таки, чтобы Вы подтвердили свои высказывания реальным примером, который мы могли бы запустить и возможно отладить у нас.
С уважением Климов Александр
Компания ДЭП
г. Москва
(495) 995-00-12 доб. 150

Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 08 сен 2009, 00:58

ещё раз говорю .. что проблема появляется при использовании многопоточного приложения, на ровном месте , при получении указателя на класс ...

причём при убивании компонентов это же приложение работает без каких то нибыло проблем !


сейча спопробую несколькодругой подход ... и вообще сейчас буду плотно отходить от компонентов , буду пытаться разбираться с OPC напрямую...