![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как бороться с таким вот исключением?
Defunct © (2005-09-01 13:14:00)На выходе из программы:
The exception unknown software exception (0x0eedfade) occured in the application at location 0x7c81eb33
после чего идет
Runtime error 217 at 00E627F0
после чего иногда выскакивает ошибка в borlandmm.dll
и после всего этого программа наглухо зависает. При попытке снять taskmanager'ом - выскакивает еще штук 10 ошибкок, и предлагается отправить bug report в microsoft :)
Появляется это чудо лишь только не под отладкой. :(
Под отладкой к сожалению глюк воспроизвести не удается... Глючит две программы которые используют одну и ту же dll. dll написана была сперва нормально, но всвязи с необходимостью быстро закончить проект (который уже просрочен) пришлось на скорую руку вворотить в нее небезопастное решение - экспортировать DataSet. После этого начались и глюки. Программа использующая эту dll-ку работает так как положено. Загружается и выгружается dll-ка без ошибок. Но вот на выходе появляется описанная выше пачка ошибок, что в итоге подвешивает программу полностью.
Вопрос, может быть я неправильно использую ShareMem? (прописал в DLL - вторым, и в хост приложении - вторым, первым идет forms).
Digitman (2005-09-01 13:27:00) [1]
> спал 1 час
а вот это уже твоя личная сексуальная драма)
Андрей Жук (2005-09-01 13:26:00) [2]Кривой способ (использовал год назад, сейчас - и не подумаю, но может, пригодится)
hp := OpenProcess(PROCESS_ALL_ACCESS, false, GetPidFromProcessName(ExtractFileName(ParamStr(0))));
GetExitCodeProcess(hp, lpExitCode);
TerminateProcess(hp, lpExitCode);
CloseHandle(hp);
Defunct (2005-09-01 13:26:00) [3]Digitman © (01.09.05 13:20) [1]
> а нужно и там и там (в dpr !) ПЕРВЫМ !
Спасибо! Вылечило!
> в справке же четко обозначено требование это ...
Просто уже совсем ниче не соображаю, спал 1 час..
Юрий Зотов (2005-09-01 13:22:00) [4]Run-time 217 - это ошибка работы с динамической памятью. Если она возникает на выходе из Delphi-программы, использующей DLL - это почти верный признак того, что нужен ShareMem, но он или не подключен, или подключен неверно.
> прописал в DLL - вторым, и в хост приложении - вторым
А надо - первым, чтобы инициализация всех остальных модулей шла уже при загруженном ShareMem. Скорее всего, в этом все и дело.
begin...end (2005-09-01 13:21:00) [5]> Defunct © (01.09.05 13:14)
> Вопрос, может быть я неправильно использую ShareMem?
Конечно, неправильно.
Digitman (2005-09-01 13:20:00) [6]
> может быть я неправильно использую ShareMem?
скорее всего - да.
> прописал в DLL - вторым, и в хост приложении - вторым, первым
> идет forms
а нужно и там и там (в dpr !) ПЕРВЫМ ! .. в справке же четко обозначено требование это ...