Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.21;
Скачать: CL | DM;

Вниз

Ошибка загрузки dll. at $7C812A5B. Почему такое может быть?   Найти похожие ветки 

 
Vlad Oshin ©   (2008-10-21 11:53) [0]

Есть программа и 12 dll.

В dpr стоит в первых строках
 JclStackTrackingOptions :=  [stExceptFrame, stStack,  stRawMode, stAllModules, stStaticModuleList];
 JclStartExceptionTracking;
 JclAddExceptNotifier(LogException);  


соответственно проседура
procedure LogException(ExceptObj: TObject; ExceptAddr: Pointer; IsOS: Boolean);
var
 mmLog: String;
 ModInfo: TJclLocationInfo;
begin
 try
   ModInfo := GetLocationInfo(ExceptAddr);
   mmLog:=Format(
     #13#10+"Exception occured at $%p "+#13#10+
     "Module "%s""+#13#10+
     "Procedure "%s""+#13#10+
     "Unit "%s""+#13#10+
     "Line %d",
     [ModInfo.Address,
      ModInfo.UnitName,
      ModInfo.ProcedureName,
      ModInfo.SourceName,
      ModInfo.LineNumber]);
   WriteToLog(mmLog);
 Except
 end;
end;


Вчера все работало. Сегодня поправил 2 из них(написал несколько отправок сообщений главной форме app по нажатию на кнопки).

Лог
DateTime: 21.10.2008 11:31:26
NumeroQuattro.Департамент: module NQItem.dll attach process
----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 11:31:26
NumeroQuattro.Департамент: module NQItemGroup.dll attach process
----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 11:31:26
Exception occured at $7C812A5B Module "" Procedure "RaiseException" Unit "" Line 0----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 11:31:26
NumeroQuattro.Департамент: module NQReport.dll attach process


dll NQItemGroup.dll не трогал сегодня вообще!!
что она из себя представляет: форма, на ней cxDBTreeList(DevExpress), панель, 4кнопки
Соответственно, отображает дерево из БД, можно выбрать что-то. И "что-то" засылается сообщением далее. Да это и не важно. После этой ошибки дерево при вызове пустое. Данные не считались.
Все dll делаются по шаблону. Эта - единственная, где исп. cxDBTreeList. Везде в других исп. cxGrid, едиты, комбо, и т.п.
Тут тоже, но + cxDBTreeList.

То ли с ним проблемы, то ли с чем?
Есть какие мысли?


 
Vlad Oshin ©   (2008-10-21 12:01) [1]

ничего не понимаю..
А судя по стеку

NQ.LogException(???,$7C812A5B,???)
JclHookExcept.TNotifierItem.DoNotify(???,???,True)
JclHookExcept.DoExceptNotify($196F0F0,$7C812A5B,True)
JclHookExcept.HookedExceptObjProc(???)
:51f26b4d @HandleAnyException + $35
:7c90378b ntdll.RtlConvertUlongToLargeInteger + 0x46
:7c90eafa ntdll.KiUserExceptionDispatcher + 0xe
:030d0258 SetThreadName + $48
:0310b793 IdThread + $13
:51f2747c @StartLib + $C4
:7c9011a7 ntdll.LdrInitializeThunk + 0x29
:7c91cbab ; ntdll.dll
:7c916178 ; ntdll.dll
:7c9162da ; ntdll.dll
:7c801bb9 kernel32.LoadLibraryExW + 0xc8
:7c801d6e kernel32.LoadLibraryExA + 0x1f
:7c801da4 kernel32.LoadLibraryA + 0x2d
formMain.TfrmMain._LoadLibrary(???,"NQReport",("Software", "ЗАО «ТД «ПЕРЕКРЕСТОК»", "NQ", "User", "Owner", "NQ", "NumeroQuattro.Департамент", "C:\delphi\nq\NQ.ini", True, (18, 29376, 20997, 29384)),$17C26A0)
formMain.TfrmMain._LoadLibraries($17BB470,$17EFEE0,$17C26A0)
formMain.TfrmMain.Create(???)
:5207946c TApplication.CreateForm + $34
NQ.NQ
:7c816fd7 kernel32.RegisterWaitForInputIdle + 0x49

NQReport.dll лажанулась .. (впрочем, ее тоже не трогал)


 
clickmaker ©   (2008-10-21 12:24) [2]

а в секции initialization там есть что-нить?


 
Vlad Oshin ©   (2008-10-21 14:24) [3]

нет, ничего нет.
Все что возможно загнал в try except WriteToLog("ТУТ!!"); (да все вообще, почти каждую строчку)
Все прошел по F8-F7,
не пойму где ошибка..


 
Eraser ©   (2008-10-21 14:29) [4]

> [3] Vlad Oshin ©   (21.10.08 14:24)

в опциях компилятора Run time errors включи range checking и поработай с программой в разных режимах.
скорее всего что-то где-то явно портит память процесса.
возможно поможет выявить это место замена Free на FreeAndNil в спорных местах.


 
Vlad Oshin ©   (2008-10-21 15:26) [5]


> в опциях компилятора Run time errors включи range checking

включено

> Free на FreeAndNil в спорных местах.

заменил на Free и :=nil, во всех местах

ничего..
-----------------
переписал

{$IFDEF INLOG2}
procedure LogException(ExceptObj: TObject; ExceptAddr: Pointer; IsOS: Boolean);
var
 mmLog: String;
 ModInfo: TJclLocationInfo;
begin
 try
   ModInfo := GetLocationInfo(ExceptAddr);
   mmLog:=Format(
     #13#10+"Exception occured at $%p "+#13#10+
     "Module "%s""+#13#10+
     "Procedure "%s""+#13#10+
     "Unit "%s""+#13#10+
     "Line %d",
     [ModInfo.Address,
      ModInfo.UnitName,
      ModInfo.ProcedureName,
      ModInfo.SourceName,
      ModInfo.LineNumber]);
   WriteToLog(mmLog+" "+SysErrorMessage(GetLastError));
 Except
 end;
end;
{$ENDIF}


поменял порядок загрузки dll, теперь явно видно, что хромает Report, где бы не стояла - на ней ошибается

Try LoadLibrary |NQBasket|
----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 15:15:07
NumeroQuattro.Департамент: module NQBasket.dll attach process
----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 15:15:07
Try LoadLibrary |NQReport|
----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 15:15:07
Exception occured at $7C812A5B Module "" Procedure "RaiseException" Unit "" Line 0 Не удается найти указанный файл
----------------------------------------------------------------------------------------------------------------------- DateTime: 21.10.2008 15:15:07
NumeroQuattro.Департамент: module NQReport.dll attach process


Отключил в ней возможности передачи отчета по почте
IdMessage, IdCoderHeader,IdAttachmentFile,IdText, idSMTP

Заработало.
Чем indy может так шалить?


 
Eraser ©   (2008-10-21 15:31) [6]

> [5] Vlad Oshin ©   (21.10.08 15:26)

скорее всего не все так просто. это самый страшный тип ошибки, она может возникать где угодно, при значительном изменении структуры кода (добавление/удаление какого либо модуля) может вообще, казалось бы, исчезнуть.
поищи в своем коде, касающимся Indy и писем ошибки, но вряд ли найдешь думаю.. ошибка в каком-то "левом" месте.. возможно при инициализации/загрузки чего то, imho с этой стороны копать надо.


 
clickmaker ©   (2008-10-21 15:59) [7]

> IdMessage, IdCoderHeader,IdAttachmentFile,IdText, idSMTP

смотри, что там может косячить в initialization


 
Petr V. Abramov ©   (2008-10-21 16:43) [8]

а uses sharemem в первых строках соит?


 
Vlad Oshin ©   (2008-10-21 17:38) [9]


> Petr V. Abramov ©   (21.10.08 16:43) [8]
> а uses sharemem в первых строках соит?

использую Fast Memory Manager 4.84



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

Текущий архив: 2008.12.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
2-1226560852
Lera
2008-11-13 10:20
2008.12.21
Импорт из dbf файла через ADO


2-1226510112
art
2008-11-12 20:15
2008.12.21
Помогите переделать задачу из Pascal в Delphi


2-1226472613
Alex7
2008-11-12 09:50
2008.12.21
TShiftState из какого модуля?


15-1224490553
Михаил2
2008-10-20 12:15
2008.12.21
Unicode, зачем так сделано


2-1226325610
@!!ex
2008-11-10 17:00
2008.12.21
Predefine record