Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
3-1080652383
Ivan
2004-03-30 17:13
2004.04.25
Сумма по QRExpr


1-1081334569
hawkins
2004-04-07 14:42
2004.04.25
запускать только одну копию программы...


14-1080807128
Anatoly Podgoretsky
2004-04-01 12:12
2004.04.25
Про чат


14-1080724901
Verg
2004-03-31 13:21
2004.04.25
Кто-то тут спрашивал про то, как может процесс "исчезнуть"


1-1081527920
DeveloperUA
2004-04-09 20:25
2004.04.25
Руссификайия EXE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский