Delphi XE4 64位_TExt Dll异常

时间:2014-02-14 10:50:46

标签: delphi delphi-xe4

基于COM技术的项目。 我在Delphi XE4 64Bit上记录了JCL的错误(SKGeneral64是COM Dll):

ERR (ThreadID=14C8 14.02.2014 16:43:14:274) - Exception class: _TExitDllException
Exception address: 000000000536DBAE
Stack list, generated 14.02.2014 16:43:14
[000000000536DBAE] System.ExitDll + $3E
[000000000536DCF4] System.@Halt0 + $54
[000000000536D5E3] System.@StartLib + $123
[0000000005375FA2] SysInit.@InitLib + $92
[00000000056D7938] SKGeneral64.SKGeneral64 + $38
[000000007777C76C] Unknown function at RtlUserThreadStart + $26C
[000000007777C42F] Unknown function at LdrInitializeThunk + $10F
[000000007777C32E] LdrInitializeThunk + $E
----------------------------------------------------------------------------------------------------
System   : Windows 7 Professional, Version: 6.1, Build: 1DB1, "Service Pack 1"
Processor: Intel, Intel(R) Xeon(R) CPU           X5670  @ 2.93GHz, 2960 MHz MMX
----------------------------------------------------------------------------------------------------
Module: C:\PROGRA~2\SKBKON~1\Active\Bin\SKGENE~2.DLL   Modified: 14.02.2014 16:42:37
Version: 1.0.0.0  Description: 

是什么原因?它可能是内存泄漏和内存碎片的原因吗?

1 个答案:

答案 0 :(得分:2)

进行了一些挖掘后,似乎预期会出现此异常,并且是线程在线程终止时返回其退出代码的方式。

这是怎么回事。拨打System.ExitDll致电:

procedure ExitDll(Context: PInitContext);
var
  ResultExitCode: Integer;
begin
  Context^ := Context.OuterContext^;
  ResultExitCode := ExitCode;
  ExitCode := 0;
  //raise _TExitDllException.Create(ResultExitCode);
  _RaiseExcept(_TExitDllException.Create(ResultExitCode));
end;

这就是提出异常的原因。该异常在_HandleExitDllException

中处理
function _HandleExitDllException: Integer;
var
  ExceptionObject: TObject;
begin
  Result := -1;
  ExceptionObject := ExceptObject;
  if ExceptionObject is _TExitDllException then
    Result := _TExitDllException(ExceptionObject).ExitCode
  else
    _UnhandledException;
  _DoneExcept;
end;

此代码从异常中读取退出代码并将该值返回给调用者。您无法在RTL中看到调用_HandleExitDllException的任何代码,大概是因为它是由编译器/链接器神奇地链接的。

基本上,这是错误报告软件的误报。此异常是正常程序执行的一部分。没有什么可担心的。除了您的错误报告代码似乎有缺陷。

相关问题