Вверх ↑
Ответов: 3889
Рейтинг: 362
#1: 2011-06-28 13:32:55 ЛС | профиль | цитата
nesco писал(а):
Маленький диспетчер задач на основе консольной программы tasklist
WinXPSP3 P4 HT 512RAM с админскими правами, вылетает с разными фатальными ошибками после нескольких циклов. Иногда компиляторный перехват ошибок успевает сработать первым (ошибка 204 - неправильно отработал указатель), иногда я уже в дебаггере вижу, что используется недопустимый указатель при косвенной адресации через регистр EAX в одном и том же месте. Если интересно, могу декомпилировать и выяснить в каком классеюните лежит этот код.
------------ Дoбавленo в 12.54:
Как и обещал, ориентируясь по остаточным данным (символьным меткам имён в коде) разобрал в дизассемблере объектное дерево. Вылетает процедура DeleteFree(f:Pfree) из system. Надо думать, проблема проявляется в менеджере памяти, но вот откуда она берёт начало... Сейчас прослежу дерево вызовов по стеку, постараюсь сказать, откуда ноги растут.
------------ Дoбавленo в 13.32:
Фатальная цепочка, полученная методом дедукции (читаю стек, ищу начало процедуры, её дискриптор, там читаю символьное имя), выглядит так hiWinExec -> LStrFromPCharLen -> NewAnsiString -> GetMem -> SysGetMem -> TryHarder -> DeleteFree -> ошибка

Предварительно ошибка происходит в модуле hiWinExec, строка 125: pBuffer[Total] := #0;

Что интересно, вылетает под обоими компиляторами.

карма: 1

0