Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1225373404
Vayrus
2008-10-30 16:30
2009.12.20
Восстановление прав доступа


2-1257024312
worldmen
2009-11-01 00:25
2009.12.20
Дата перехода на летнее/зимнее время


2-1256898581
Oleg1963
2009-10-30 13:29
2009.12.20
Компонент Еdit в цикле


2-1257094427
Don
2009-11-01 19:53
2009.12.20
Как сделать компонент image1 на форме полупрозрачным


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский