Главная страница
    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.004 c
15-1446327002
Юрий
2015-11-01 00:30
2016.07.24
С днем рождения ! 1 ноября 2015 воскресенье


15-1445361141
Rouse_
2015-10-20 20:12
2016.07.24
Таксь, у нас опять кто-то умный появился.


2-1416468559
Endy
2014-11-20 10:29
2016.07.24
Подскажите литературу, WinAPI, интерфейсы (interfaces)


15-1444396522
ВладОшин
2015-10-09 16:15
2016.07.24
нужно быстро отсечь "хвост" массива чисел


2-1416664103
Drowsy
2014-11-22 16:48
2016.07.24
Почему не очищаются Columns in DBGrid?





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