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