Вылетает ошибка доступа к памяти borlndmm.dll???

MaxFM
Дата: 22.09.2014 23:09:52
Добрый вечер!!!
Возникла такая вот проблема.
В моей программе анализируются большие многомерные массивы разных типов данных.
Так вот - если задавать небольшой диапазон расчета - до 4х дней, то все нормально считает без ошибок.
Но вот если больше то вылетает ошибку доступа к памяти "Ассеss violation" в borlndmm.dll и выдает положение на строку ассемблера
{$IF defined(CPU386)}
procedure       NotifyNonDelphiException;
asm
{     ->EAX     Pointer to exception object }
{       EDX     Context record              }
        CMP     BYTE PTR DebugHook,0
        JE      @@1
        PUSH    EAX
        PUSH    EAX
        PUSH    EDX
        PUSH    ESP
        PUSH    2
        PUSH    cContinuable
        PUSH    cNonDelphiException
        CALL    RaiseExceptionProc
        ADD     ESP,8  <----------------вот сюда указывает
        POP     EAX
@@1:
end;
{$ELSE !CPU386}


Причем вылетает ошибка всегда в это место но из разных мест программы (уже проверял) все зависит от заданного диапазона.
В одном месте при создании динамич. массива, в другом месте - из-за обращения к строке не из массива.
Можете рассказать где моя ошибка?!
заранее спасибо.
Dimitry Sibiryakov
Дата: 22.09.2014 23:33:26

MaxFM
Можете рассказать где моя ошибка?!

В программе. Выходишь за пределы массивов, портишь память.

Posted via ActualForum NNTP Server 1.5

?
Дата: 23.09.2014 06:33:25
Dimitry Sibiryakov
MaxFM
Можете рассказать где моя ошибка?!

В программе. Выходишь за пределы массивов, портишь память.
Возможны варианты - обращение к освобожденной памяти, двойное освобождение памяти, ...
MaxFM
Дата: 23.09.2014 13:26:40
тогда почему все нормально когда диапазон маленький?
понимаю если бы всегда вылетала
а то - массив маленький - все ок
массив большой - вылетает.
Dima T
Дата: 23.09.2014 13:38:51
MaxFM
массив маленький - все ок
массив большой - вылетает.

Смотри свой код и ищи что выполняется только когда массив большой.

Твой код из первого поста похож на встроенный обработчик исключений, не знает как обработать и отдает его виндовсу, поэтому ты видишь всегда одно и тоже место.
Dimitry Sibiryakov
Дата: 23.09.2014 13:39:27

MaxFM
тогда почему все нормально когда диапазон маленький?

Потому что баг сидит в области больших диапазонов. Используй Code Guard, раз уж компилятор
от борланда...

Posted via ActualForum NNTP Server 1.5

Dima T
Дата: 23.09.2014 13:40:21
Добейся стабильного повторения вылета, потом искать начинай.
mayton
Дата: 23.09.2014 14:29:44
MaxFM, я настоятельно рекомендую опубликовать исходный код на С/С++.
В противном случае у нас получится философская беседа на вольные темы.
Dimitry Sibiryakov
Дата: 23.09.2014 14:39:25

mayton
я настоятельно рекомендую опубликовать исходный код на С/С++.

И лучше бы вместе с логом Code Guard. Он в самом деле сильная вещь, помог мне не одного
бага выловить.

Posted via ActualForum NNTP Server 1.5

MasterZiv
Дата: 23.09.2014 15:01:28
mayton
MaxFM, я настоятельно рекомендую опубликовать исходный код на С/С++.
В противном случае у нас получится философская беседа на вольные темы.


Обычно такие баги не лечатся не автором кода.
Потому что они очень сложные.
Надо отлаживать, прогонять в динамике код...