Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

The memory could not be "read"   Найти похожие ветки 

 
Anatta   (2004-04-04 16:53) [0]

Привет всем мастерам Делфи!

Помогите разрешить одну проблему, связанную с появлением сообщения об ошибке через пол-секунды после завершения программы. Сообщение примерно такого содержания:

"the instruction at "0x406cf0ca" referenced memory at 0x00fd232c The memory could not be "read". " После  "OK"  это же сообщение появляется еще раз, и после этого еще одно сообщение "The exception.  Unknown software exception (0xc0000027 occured in the application at location 0xc7c5c1b04."

Хотя у меня адреса не такие, а эти взяты из аналогичной темы на Ру-Боарде:
http://forum.ru-board.com/misc.cgi?action=printtopic&forum=33&topic=2829

В той теме рассматривается родственная моей ошибке, однако у меня она всплывает не систематически, а скорее спонтанно, т.е. никогда не угадаешь, когда появится очередная. Вот это и осложняет отслеживание причин. Именно о последних мне и хотелось у вас спросить. Т.е., что может послужить причиной появления таких сообщений? Просто, может быть, у кого-то нечто подобное уже бывало, и он как-то уже справлялся с этим – очень бы хотелось услышать описание такого опыта.

Я, можно сказать, новичок в Делфи – это первая моя серьезная разработка, поэтому я не сомневаюсь, что где-то в чем-то ошибся, или что-то упустил. В теме на РУ-Боарде речь была о неправильной работе с указателями, но боюсь, что здесь у меня все в порядке. Единственное подозрительно место в программе было модуле обявления всех переменных в секции инициализации, типа:

initialization

 VersInfo := TVersionInfo.Create;
 MQNormsFound:=TStringList.Create;
 MQNormsFound.Sorted := true;
 MQNormsError:=TStringList.Create;
 MQNormsError.Sorted := true;

finalization

 VersInfo.Free;
 MQNormsFound.Free;
 MQNormsError.Free;

Полагая, что возможно именно здесь вкралась ошибка, я сделал проверку такую, как

finalization

 VersInfo.Free;
 MQNormsFound.Free;
 MQNormsError.Free;
 MQNormsFound := Pointer(StrToInt(‘1123322’));
 MQNormsError.Free;

После этого, безусловно, сообщение об ошибке при завершении процесса появилось, но не совсем такое, о котором идет речь, а EInvalidPointer, подкрепленное Run-time error 217. Та же ошибка, о которой я говорю, просто бич какой-то. Я уже не знаю с какой стороны к ней подходить. Все еще осложняется тем, что она появляется крайне редко, при этом я не могу понять, какие же факторы ее вызывают. Буду очень признателен за любое указанное направление в решении этой проблемы. Или может все же указатели?..

Использую Apollo VCL 6.0 и Flexcel v2.5.3.


 
DrPass ©   (2004-04-04 19:50) [1]

К чему это?
MQNormsFound := Pointer(StrToInt(‘1123322’));
И к чему два раза подряд делать это?
MQNormsError.Free;
А вообще, ошибка может быть где угодно. А может, ты просто используешь DLL без ShareMem...


 
Anatta   (2004-04-05 18:27) [2]

//И к чему два раза подряд делать это?//

Тем самым я надеялся создать ситуацию, когда объект уже освобожден, а указатель на него все еще ссылается. Об этой ситуации, насколько я понял, и шла речь на РУ-Боарде. Исключение создалось, но не то, что было прежде у меня, а значит причина не в этом участке кода.

//А может, ты просто используешь DLL без ShareMem...//

Можно вот этот момент поподробнее.

Свои DLL я не использую, но вот Apollo VCL принуждает к этому: все функции по работе с БД и индексамии сидят в библиотечках, соответственно и приложение, написанное с использованием Apollo SDE требует для своей работы эти DLL-ки.


 
Digitman ©   (2004-04-05 18:36) [3]


> Anatta


склонен предположить, что подобная ситуация возникает в связи с некорректным (явным или неявным) использованием доп.код.потоков

"неявно" - здесь имеется ввиду, что доп.код.поток (один или более) вполне может создаваться ядром Аполло и уничтожаться "невовремя".. неустойчивость отказа понуждает мыслить как минимум в этом направлении


 
Матлабист   (2004-04-05 19:23) [4]

Search -> Find Error -> $406cf0ca
Что дает?


 
Anatta   (2004-04-07 18:11) [5]

>Digitman

А что такое "доп.код.поток"?

>Матлабист
>Search -> Find Error -> $406cf0ca

Проблема в том, что если такая ситуация возникает, когда я запускаю прогу из IDE, под управлением отладчика, то когда (при завершении программы) ошибка возникает, то последствия весь плачевные, т.е. процесс Делфи (того, как я пытаюсь предпринять какие-то дальнейшие действия из набора F9,F8,F7 и т.п.) начинает "жрать" 100% процессорного времени (видимо идут попытки что-то отладить), причем приходиться жать reset - иначе не получается убить процесс. Т.к. ошибка возникает особенно редко, то я не могу использовать предложенный Вами метод, однако все же, волей случая, однажды, мне удалось таки им воспользоваться, и при этом увидеть, что ошибка в теле метода TObject.Free. Только вот какой объект уничтожается я так и не узнал, т.к. все мои попытки опять обернулись тем, что IDE стала жрать 100% проц. времени. После этого, я больше не эксперементирую с IDE, а всегда сам запускаю exe-шник проги...

Т.ч. TObject.Free, но вот что может быть? Кстати, извините, что сразу не сказал про TObject.Free, все таки хотелось услышать всевозможные гипотезы причин данного явления.


 
Anatta   (2004-04-07 18:16) [6]

>Digitman

А что такое "доп.код.поток"?

>Матлабист
>Search -> Find Error -> $406cf0ca

Проблема в том, что если такая ситуация возникает, когда я запускаю прогу из IDE, под управлением отладчика, то когда (при завершении программы) ошибка возникает, то последствия весь плачевные, т.е. процесс Делфи (того, как я пытаюсь предпринять какие-то дальнейшие действия из набора F9,F8,F7 и т.п.) начинает "жрать" 100% процессорного времени (видимо идут попытки что-то отладить), причем приходиться жать reset - иначе не получается убить процесс. Т.к. ошибка возникает особенно редко, то я не могу использовать предложенный Вами метод, однако все же, волей случая, однажды, мне удалось таки им воспользоваться, и при этом увидеть, что ошибка в теле метода TObject.Free. Только вот какой объект уничтожается я так и не узнал, т.к. все мои попытки опять обернулись тем, что IDE стала жрать 100% проц. времени. После этого, я больше не эксперементирую с IDE, а всегда сам запускаю exe-шник проги...

Т.ч. TObject.Free, но вот что может быть? Извините, что сразу не сказал про TObject.Free, все таки хотелось услышать всевозможные гипотезы причин данного явления.


 
Cobalt ©   (2004-04-07 21:58) [7]

Прояните такой момент - программа использует потоки явно? Т.е. вы создаёте/вызываете потоки? Если не знаете, то, скорее всего нет.

Сколько потоков в программе на самом деле? (Диспетчер задач, вид, колонки, счётчик потоков)

Где происходит завершение работы используемых DLL-ок? Они загружаются статически или динамически(LoadLibrary)?


 
Digitman ©   (2004-04-08 08:14) [8]


> при этом увидеть, что ошибка в теле метода TObject.Free.
> Только вот какой объект уничтожается я так и не узнал


запроси у отладчика

self.ClassName



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
14-1081164946
Info
2004-04-05 15:35
2004.04.25
В CVS на firebird.sf.net появился FireBird 1.5.1


3-1080716239
Timur
2004-03-31 10:57
2004.04.25
DBF в delphi


14-1080728471
syte_ser78
2004-03-31 14:21
2004.04.25
Вопрос к Харьковчанам (если тут такие есть)


1-1081253872
infom
2004-04-06 16:17
2004.04.25
Поиск


3-1080540271
Vetas
2004-03-29 10:04
2004.04.25
Помогите с базой на Access