Модератор: Модераторы


 
 
МОДУЛЬ lib_test013.so РУХНУЛ
Крах модуля: непойманное исключение,
  Access Violation
Код по адресу 005AE48Eh
   (исходник mo_module.pp
    позиция 208:3)
  превысил свои права на доступ
  к какой-то из страниц виртуальной памяти.
Как правило такое случается при обращении
  к несуществующим данным (ещё не созданному
  или уже уничтоженному экземпляру класса,
  неинициализированному указателю, пустой строке
  или динамическому массиву нулевой длины и т.п.)


 Выковырял разбиратор PE из старого модуля lineinfo 2000 года, прикрутил... Выковыривает. Имя секции со строками оказалось "/30"
  Выковырял разбиратор PE из старого модуля lineinfo 2000 года, прикрутил... Выковыривает. Имя секции со строками оказалось "/30" 



 
 

  procedure GetModuleByAddr(addr: pointer; var baseaddr: pointer; var filename: string);
  {$ifdef unix}
  var
    dlinfo: dl_info;
  begin
    FillChar(dlinfo, sizeof(dlinfo), 0);
    dladdr(addr, @dlinfo);
    baseaddr:= dlinfo.dli_fbase;
    filename:= String(dlinfo.dli_fname);
    if filename = ParamStr(0) then baseaddr:= nil;
  end;
  {$else}
  var
    Tmm: TMemoryBasicInformation;
    TST: array[0..Max_Path] of Char;
  begin
    if VirtualQuery(addr, @Tmm, SizeOf(Tmm)) <> sizeof(Tmm)
      then raise Exception.Create('The VirualQuery() call failed.');
    baseaddr:=Tmm.AllocationBase;
    TST[0]:= #0;
    GetModuleFileName(THandle(Tmm.AllocationBase), TST, SizeOf(TST));
    filename:= String(PChar(@TST));
    if filename = ParamStr(0) then baseaddr:= nil;
  end;
  {$endif}  

 Пишу свой strip, более эффективный.
 Пишу свой strip, более эффективный.  Под вайном результат его самодеятельности уже запускается, осталось проверить под настоящим маздаем.
 Под вайном результат его самодеятельности уже запускается, осталось проверить под настоящим маздаем.

 
 




Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1