Форум: "Основная";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];
Вниз
Package InitUnit Table Bug Найти похожие ветки
← →
mm_ash (2008-12-15 20:46) [0]Приветствую вас, уважаемые мастера!!
Мое приложение при запуске загружает некоторый набор пакетов динамически.
Возникла проблема которая, похоже, связана с тем что при компиляции пакета в D2007-2009 неверно заполняется таблица инициализации юнитов. Ошибка заключается в том, что компилятор включает в эту таблицу блок инициализации самого пакета (кусок асма который вставляет компилятор после "end." в пакете), который нужен лишь для инициализации функцией ntdll.LdrInitializeThunk, но тем не менее программа пытается вызвать этот блок кода думая что это TProc=Procedure() обычной секции инициализации юнита.. естественно что это полностью крашит стек и программа виснет при загрузке пакета и вообще работает через раз (в зависимости от того как скомпилишь юниты в пакетах, иногда даже зависит от того билдишь или компилишь пакет).. причем ошибка проявляется рандомно... что делать, является ли это багом Delphi или я чего-то не понимаю?
← →
mm_ash (2008-12-16 15:17) [1]Неужели никто не сталкивался? Или в радстудии никто ничего серьезного не пишет? ))
← →
KilkennyCat © (2008-12-16 15:31) [2]
> Или в радстудии никто ничего серьезного не пишет? ))
Понятие серьезности относительно. И использование вышенаписанной фичи вовсе не гарантирует "серьезности" проекта.
У меня с D2007 такой проблемы нет. Да и вообще была только одна - зависание контекстного меню.
← →
mm_ash (2008-12-16 16:02) [3]"Серьзность".. Имелось в виду что в "несерьезных" прожектах врядле понадобится делать пакетное деление, скорее всего приминение пакетов может быть оправдано в более менее крупных проектах, что и я предположил, задавая вопрос.. к тому же мне очень не хочется заниматься mental masturbation, у меня есть проблема, я хочу спросить у людей, может кто сталкивался, чтобы решить ее, вот и все..
← →
Сергей М. © (2008-12-16 16:16) [4]
> естественно что это полностью крашит стек
Ничего естественного.
← →
mm_ash (2008-12-16 17:37) [5]ну если в стек ничего не запихивать (как для вызова TProc), а процедура, которую вызывают делает три лишних pop это разве противоестественно что дальнейшая работа со стеком будет невозможна?
← →
Сергей М. © (2008-12-17 09:43) [6]
> процедура, которую вызывают делает три лишних pop
Показывай листинг ..
← →
mm_ash (2008-12-17 13:47) [7]эм.. я вообщем уже кодегиру написал, но от них похоже ждать три года можно.. им же я выложил демку, если хочешь можешь посмотреть..
http://qc.codegear.com/wc/qcmain.aspx?d=69916
Воспроизвести баг невероятно сложно, он проявляется при большом количестве пакетов и связей между ними, да еще в добавок только на новых версиях делфи, на семерке все отлично работает!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c