[delphi-users:2296] 内での䟋倖再生成で実行時゚ラヌXE2、Win64

135 views
Skip to first unread message

高朚倪郎

unread,
Oct 28, 2011, 10:17:06 AM10/28/11
to delphi...@freeml.com
 こんばんは、むマゞオムの高朚です。 

 Delphi XE2 で、Win64 ネむティブのを䜜っおいる時に
䞍可思議な珟象に遭遇したので報告いたしたす。 同様の珟象に
出䌚った方はいらっしゃいたせんか

■珟象

を䜜り、その䞭に次の二぀の゚クスポヌト手続きを甚意。

procedure ExportA; stdcall;
begin
Abort;
end;
  
procedure ExportB; stdcall;
begin
try
Abort;
except
raise;
end;
end;

Delphi XE2 の Win64 Release モヌドでをコンパむル。

Windows 7 64-bit Edition の動䜜環境を甚意し、適圓なホスト
  アプリケヌションもちろんビットにをリンク
  させお、それぞれの゚クスポヌト手続きを呌び出しおみる。

するず ExportA では、ホストアプリケヌション偎にトラップ可胜な
䟋倖が生じるのに、ExportB では Runtime error 216アクセス
違反が生じ、ホストアプリケヌションが匷制終了されたす。
raise; の時点で違反が生じるようで、これを try-finally 文で
くるんでも、finally 節たで凊理が行きたせん。

 もしかするず私の環境や、プログラムの䜜りに特有の珟象なのかも
しれたせんが時間を芋぀けお最小コヌドで詊そうず思いたす)、
それにしおも䟋倖を except でトラップしお再生成させただけで
動䜜が異なるずいうのは䞍可思議です。
――――――――――――――――――――――――――――――――――――
株匏䌚瀟むマゞオム 代衚取締圹 高朚倪郎
〒 茚城県 日立垂 氎朚町 
電話
ファクシミリ
電子メヌルtarou_...@imageom.co.jp
ホヌムペヌゞhttp://www.imageom.co.jp/


MLホヌムペヌゞ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
戊囜時代の歊将達ずずもに倩䞋統䞀を目指そう
http://ad.freeml.com/cgi-bin/sa.cgi?id=h1FPE
-----------------------------------------------------[freeml by GMO]--

高朚倪郎

unread,
Oct 28, 2011, 8:23:02 PM10/28/11
to delphi...@freeml.com
 こんにちは、むマゞオムの高朚です。 

 昚倜報告した珟象に぀いお、最小コヌドでも再珟が確認されたしたので、
報告いたしたす。 テストに䜿甚したずアプリケヌションの゜ヌス
コヌドを末尟に掲茉いたしたす。 これらを Delphi XE2 update 1 で
ビルドし、同じディレクトリに眮きたす。 アプリケヌションを起動しお
TestAButton や TestBButton を抌すず、次のようになりたす。

  ━━━━━━━━┯━━━━━━━┯━━━━━━┯━━━━━━
  コンパむル   │動䜜環境   │テスト  │テスト
  ────────┌───────┌──────┌──────
  Win32      │Windows XP  │正垞    │正垞
  Release モヌド │ビット  │※    │※
          ├───────┌──────┌──────
          │Windows 7   │正垞    │正垞
          │ビット  │※    │※
  ────────┌───────┌──────┌──────
  Win64      │Windows 7   │正垞    │異垞
  Release モヌド │ビット  │※    │※
  ━━━━━━━━┷━━━━━━━┷━━━━━━┷━━━━━━
  ※「Test*ButtonClick で䟋倖」ず衚瀺されたす。
  ※Runtime error 216アクセス違反が生じ、アプリケヌションが
     匷制終了されたす。

Delphi のバグかず思いたすので、に䞊げおおきたす。

(以䞋、テストプログラムの゜ヌスコヌド
――――――――――――――――――――――――――――――――――――
■の゜ヌスコヌド

library TestDLL;

uses SysUtils;

procedure ExportA; stdcall;
begin
Abort;
end;

procedure ExportB; stdcall;
begin
try
Abort;
except
raise;
end;
end;

exports ExportA name 'ExportA',
ExportB name 'ExportB';

begin
end.

■アプリケヌションの゜ヌスコヌド

unit Main;

interface

uses Forms,Windows,Classes,Controls,StdCtrls;

type TTestAProc=procedure; stdcall;
TTestBProc=procedure; stdcall;

type TMainForm=
class(TForm)
TestAButton:TButton;
TestBButton:TButton;
procedure MainFormCreate(Sender:TObject);
procedure MainFormDestroy(Sender:TObject);
procedure TestAButtonClick(Sender:TObject);
procedure TestBButtonClick(Sender:TObject);
private
DLLHandle:THandle;
TestAProc:TTestAProc;
TestBProc:TTestBProc;
end;

var MainForm:TMainForm;

implementation

{$R *.DFm}

procedure TMainForm.MainFormCreate;
begin
DLLHandle:=LoadLibrary('TestDLL.DLL');
TestAProc:=GetProcAddress(DLLHandle,'ExportA');
TestBProc:=GetProcAddress(DLLHandle,'ExportB');
end;

procedure TMainForm.MainFormDestroy;
begin
FreeLibrary(DLLHandle);
end;

procedure TMainForm.TestAButtonClick;
begin
try
TestAProc;
except
WriteLn('TestAButtonClick で䟋倖');
end;
end;

procedure TMainForm.TestBButtonClick;
begin
try
TestBProc;
except
WriteLn('TestBButtonClick で䟋倖');
end;
end;

end.


――――――――――――――――――――――――――――――――――――
株匏䌚瀟むマゞオム 代衚取締圹 高朚倪郎
〒 茚城県 日立垂 氎朚町 
電話
ファクシミリ
電子メヌルtarou_...@imageom.co.jp
ホヌムペヌゞhttp://www.imageom.co.jp/


MLホヌムペヌゞ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
「アルテむル」オンラむンカヌドゲヌムで暇぀ぶし
http://ad.freeml.com/cgi-bin/sa.cgi?id=h1JkU

高朚倪郎

unread,
Oct 29, 2011, 1:12:56 AM10/29/11
to delphi...@freeml.com
 こんにちは、むマゞオムの高朚です。 たびたびで倱瀌いたしたす。

>  昚倜報告した珟象に぀いお、最小コヌドでも再珟が確認されたしたので、
> 報告いたしたす。 テストに䜿甚したずアプリケヌションの゜ヌス
> コヌドを末尟に掲茉いたしたす。 これらを Delphi XE2 update 1 で
> ビルドし、同じディレクトリに眮きたす。 アプリケヌションを起動しお
> TestAButton や TestBButton を抌すず、次のようになりたす。
>
>   ━━━━━━━━┯━━━━━━━┯━━━━━━┯━━━━━━
>   コンパむル   │動䜜環境   │テスト  │テスト
>   ────────┌───────┌──────┌──────
>   Win32      │Windows XP  │正垞    │正垞
>   Release モヌド │ビット  │※    │※
>           ├───────┌──────┌──────
>           │Windows 7   │正垞    │正垞
>           │ビット  │※    │※
>   ────────┌───────┌──────┌──────
>   Win64      │Windows 7   │正垞    │異垞
>   Release モヌド │ビット  │※    │※
>   ━━━━━━━━┷━━━━━━━┷━━━━━━┷━━━━━━
>   ※「Test*ButtonClick で䟋倖」ず衚瀺されたす。
>   ※Runtime error 216アクセス違反が生じ、アプリケヌションが
>      匷制終了されたす。
>
> Delphi のバグかず思いたすので、に䞊げおおきたす。

 本件、サンプルプロゞェクト぀きで QualityCentral に䞊げおおきたした。

  http://qc.embarcadero.com/wc/qcmain.aspx?d=100562

ビットの䞭で䟋倖の再生成ができないのは非垞に䞍䟿です。
早期に察凊しおいただきたいので、皆さたの Vote をお願いいたしたす。


――――――――――――――――――――――――――――――――――――
株匏䌚瀟むマゞオム 代衚取締圹 高朚倪郎
〒 茚城県 日立垂 氎朚町 
電話
ファクシミリ
電子メヌルtarou_...@imageom.co.jp
ホヌムペヌゞhttp://www.imageom.co.jp/


MLホヌムペヌゞ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
䜿い方はいろいろ♪䞀郚のメンバヌだけにMLメヌルを送ろう
http://ad.freeml.com/cgi-bin/sa.cgi?id=h1MUC

Reply all
Reply to author
Forward
0 new messages