Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Вниз

Крах приложения внутри FinalizeUnits   Найти похожие ветки 

 
Landon ©   (2015-09-03 15:00) [0]

Имеется Delphi 7, при завершении приложения в модуле System.pas происходит AV на этом коде:

procedure FinalizeUnits;
var
 Count: Integer;
 Table: PUnitEntryTable;
 P: Pointer;
begin
 if InitContext.InitTable = nil then
   exit;
 Count := InitContext.InitCount;
 Table := InitContext.InitTable^.UnitInfo;
{$IFDEF LINUX}
 Inc(Cardinal(Table), InitContext.Module^.GOT);
{$ENDIF}
 try
   while Count > 0 do
   begin
     Dec(Count);
     InitContext.InitCount := Count;
     P := Table^[Count].FInit;
...


В ассемблере:

system.pas.10687: procedure FinalizeUnits;
00404555  8B5E0C      mov ebx,[esi+$0c]
system.pas.10688: var
00404558  8B4004      mov eax,[eax+$04]
0040455B  8945FC      mov [ebp-$04], eax
system.pas.10692: begin
0040455E  33C0         xor eax, eax
00404560  55            push ebp
00404561  6895454000      push $00404595
00404566  64FF30      push dword ptr fs:[eax]
00404569  648920      mov fs:[eax], esp
system.pas.10693:  if InitContext.InitTable = nil then
0040456C  85DB         test ebx,ebx
0040456E  7E1B          jle +$1b
system.pas.10695: Count := InitContext.InitCount;
00404570  4B             dec ebx
system.pas.10696:  Table := InitContext.InitTable^.UnitInfo;
00404571  895E0C      mov [esi+$0c], ebx
system.pas.10697:  {$IFDEF LINUX}
00404574  8B45FC       mov eax,[ebp-$04]               <-- !!!!  ЗДЕСЬ ПАДАЕТ
00404577  8B44D804    mov eax,[eax+ebx*8+$04]
0040457B  8945F8       mov [ebp-$08],eax
system.pas.10698: Inc(Cardinal(Table), InitContext.Module^.GOT);
....

Падает на строчке:

mov eax,[ebp-$04]  - потому что ebp при этом равен нулю.

Но почему так и что делать - не понимаю, мало знаний в асемблере :(


 
Германн ©   (2015-09-03 16:37) [1]

Как же ты умудрился влезть внутрь  {$IFDEF LINUX} ?
На Kylix пишешь?


 
Игорь Шевченко ©   (2015-09-03 17:39) [2]

Memproof может помочь


 
Landon ©   (2015-09-04 11:30) [3]


> На Kylix пишешь?

нет, Delphi 7 на Win7

Мне кажется это баг CPU Window какой-то, в реальности mov eax,[ebp-$04] относится, наверное, к выполнению команды
Table := InitContext.InitTable^.UnitInfo;

не очень разбираюсь (


 
Cobalt ©   (2015-09-04 17:20) [4]

Скорее всего, в одном из используемых модулей в Finalization случился Abort, который поломал цепочку вызовов.


 
Rouse_ ©   (2015-09-04 17:38) [5]


> Cobalt ©   (04.09.15 17:20) [4]
> Скорее всего, в одном из используемых модулей в Finalization
> случился Abort, который поломал цепочку вызовов.

Алгоритм финализации писался умными людьми, рассчитывающими на случайный Abort в процессе :)
http://habrahabr.ru/post/209902/


 
Игорь Шевченко ©   (2015-09-04 19:02) [6]

http://www.catb.org/jargon/html/F/fandango-on-core.html



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1442698201
Юрий
2015-09-20 00:30
2016.07.24
С днем рождения ! 20 сентября 2015 воскресенье


15-1445780305
Кто б сомневался
2015-10-25 16:38
2016.07.24
Посоветуйте какие то интересные сайты, типа хабра


15-1442224740
voronin20
2015-09-14 12:59
2016.07.24
Файл Exchange. В системных логах приложений появляется ошибка


15-1444234918
aka
2015-10-07 19:21
2016.07.24
offline переводчик для андроид


15-1445092188
Дмитрий Белькевич
2015-10-17 17:29
2016.07.24
Отображение меню





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский