Главная страница
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.015 c
2-1257399696
Drowsy
2009-11-05 08:41
2009.12.20
Запрос на создание процедуры в IBase.


2-1257247329
Qwerg_ntgl
2009-11-03 14:22
2009.12.20
Работа с EkRTF


15-1256156099
POOP
2009-10-22 00:14
2009.12.20
Плиз, помогите найти книгу:


2-1257341717
Serge
2009-11-04 16:35
2009.12.20
Как сделать программный мультиселект ListView?


15-1256065014
Yegorchic
2009-10-20 22:56
2009.12.20
Поиск картинки по картинке