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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
15-1256122591
oldman
2009-10-21 14:56
2009.12.20
Сегодня 91 год Александу Аркадьевичу Гинзбургу


2-1257399696
Drowsy
2009-11-05 08:41
2009.12.20
Запрос на создание процедуры в IBase.


4-1225373404
Vayrus
2008-10-30 16:30
2009.12.20
Восстановление прав доступа


15-1254758929
turbouser
2009-10-05 20:08
2009.12.20
Что-то с аськой опять...


15-1256327662
SkyN
2009-10-23 23:54
2009.12.20
компонент простейшего dns сервера