Delphi XE4 64位_TExitDllException

Delphi XE4 64位_TExitDllException,delphi,delphi-xe4,Delphi,Delphi Xe4,基于COM技术的项目。 我在Delphi XE4 64位上记录了JCL的错误(SKGeneral64是COM Dll): 原因是什么?这可能是内存泄漏和内存碎片的原因吗 仔细研究之后,这个异常似乎是意料之中的,它是线程终止时返回退出代码的方式 事情是这样的。调用System.exitdell,它执行以下操作: procedure ExitDll(Context: PInitContext); var ResultExitCode: Integer; begin Context^ := C

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


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

仔细研究之后,这个异常似乎是意料之中的,它是线程终止时返回退出代码的方式

事情是这样的。调用
System.exitdell
,它执行以下操作:

procedure ExitDll(Context: PInitContext);
var
  ResultExitCode: Integer;
begin
  Context^ := Context.OuterContext^;
  ResultExitCode := ExitCode;
  ExitCode := 0;
  //raise _TExitDllException.Create(ResultExitCode);
  _RaiseExcept(_TExitDllException.Create(ResultExitCode));
end;
这就是引发例外的原因。异常在
\u 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中看不到任何调用
\u HandleExitDllException
的代码,这可能是因为编译器/链接器神奇地链接了这些代码


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

在做了一些深入的研究之后,这个异常似乎是意料之中的,并且是线程终止时返回其退出代码的方式

事情是这样的。调用
System.exitdell
,它执行以下操作:

procedure ExitDll(Context: PInitContext);
var
  ResultExitCode: Integer;
begin
  Context^ := Context.OuterContext^;
  ResultExitCode := ExitCode;
  ExitCode := 0;
  //raise _TExitDllException.Create(ResultExitCode);
  _RaiseExcept(_TExitDllException.Create(ResultExitCode));
end;
这就是引发例外的原因。异常在
\u 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中看不到任何调用
\u HandleExitDllException
的代码,这可能是因为编译器/链接器神奇地链接了这些代码


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

在做了一些深入的研究之后,这个异常似乎是意料之中的,并且是线程终止时返回其退出代码的方式

事情是这样的。调用
System.exitdell
,它执行以下操作:

procedure ExitDll(Context: PInitContext);
var
  ResultExitCode: Integer;
begin
  Context^ := Context.OuterContext^;
  ResultExitCode := ExitCode;
  ExitCode := 0;
  //raise _TExitDllException.Create(ResultExitCode);
  _RaiseExcept(_TExitDllException.Create(ResultExitCode));
end;
这就是引发例外的原因。异常在
\u 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中看不到任何调用
\u HandleExitDllException
的代码,这可能是因为编译器/链接器神奇地链接了这些代码


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

在做了一些深入的研究之后,这个异常似乎是意料之中的,并且是线程终止时返回其退出代码的方式

事情是这样的。调用
System.exitdell
,它执行以下操作:

procedure ExitDll(Context: PInitContext);
var
  ResultExitCode: Integer;
begin
  Context^ := Context.OuterContext^;
  ResultExitCode := ExitCode;
  ExitCode := 0;
  //raise _TExitDllException.Create(ResultExitCode);
  _RaiseExcept(_TExitDllException.Create(ResultExitCode));
end;
这就是引发例外的原因。异常在
\u 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中看不到任何调用
\u HandleExitDllException
的代码,这可能是因为编译器/链接器神奇地链接了这些代码



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

不看代码很难说?@谁爸爸稍后会做示例,并将在commentshard中为你编写“不看代码”的示例?@谁爸爸稍后会为你编写示例,并将在commentshard中为你编写“不看代码”的示例?@谁爸爸稍后会做示例,你会在commentshard中写下“看不到代码”这样的话吗?@谁爸爸稍后会做这个例子,会在commentsCan中写下你,这是内存泄漏吗?你为什么认为这是个漏洞?我猜你的bug报告软件有缺陷。我是一个疯狂的粉丝。在你问的问题中:这可能是内存泄漏和内存碎片的原因吗?什么内存泄漏?什么碎片?我的应用程序没有报告内存泄漏(使用FastMM4)。但该程序的内存使用率仍在增长(每天约50-100mb)。我想可能是这样的原因泄漏->碎片你如何衡量它?会是这样的内存泄漏吗?你为什么认为这是个漏洞?我猜你的bug报告软件有缺陷。我是一个疯狂的粉丝。在你问的问题中:这可能是内存泄漏和内存碎片的原因吗?什么内存泄漏?什么碎片?我的应用程序没有报告内存泄漏(使用FastMM4)。但该程序的内存使用率仍在增长(每天约50-100mb)。我想可能是这样的原因泄漏->碎片你如何衡量它?会是这样的内存泄漏吗?你为什么认为这是个漏洞?我猜你的bug报告软件有缺陷。我是一个疯狂的粉丝。在你问的问题中:这可能是内存泄漏和内存碎片的原因吗?什么内存泄漏?什么碎片?我的应用程序没有报告内存泄漏(使用FastMM4)。但该程序的内存使用率仍在增长(每天约50-100mb)。我想可能是这样的原因泄漏->碎片你如何衡量它?会是这样的内存泄漏吗?你为什么认为这是个漏洞?我猜你的bug报告软件有缺陷。我是一个疯狂的粉丝。在你问的问题中:这可能是内存泄漏和内存碎片的原因吗?什么内存泄漏?什么碎片?我的应用程序没有报告内存泄漏(使用FastMM4)。但该程序的内存使用率仍在增长(每天约50-100mb)。我想可能是这样的原因泄漏->碎片你如何衡量?