0

おはよう、

PowerBuilder 12.1 Classic (ビルド 6639) とその結果の PowerBuilder アプリケーションの両方で問題が発生しているようです。現在、メイン MDI を閉じた後にアプリケーション (コードを実行している場合は IDE) がクラッシュするという問題が発生しています。残念ながら、クラッシュに一貫したパターンはありません。MDI が開くとすぐに閉じることができますが、クラッシュすることもあれば、適切に閉じることもあります。

最初は、Application オブジェクトの close イベントに問題があるか、systemerror イベントがスローされている場所で何かが起こっていると考えていました。close イベントを介してデバッグし、すべての行が正常に実行されましたが、アプリケーションは引き続きクラッシュしました。

アプリケーションで /PBDEBUG フラグを使用して、終了の成功と失敗のデバッグ情報を取得しようと考えました。私はそうしましたが、ファイルにはまったく同じ情報が含まれています。それらはすべて、次の情報で終了します。

  Executing object function +DESTROY for class TRANSACTION, lib entry _TYPEDEF
      Executing instruction at line 2325
      Executing object function DESTROYTRANSACTION for class TRANSACTION, lib entry _TYPEDEF
          Executing system dll function
      End class function DESTROYTRANSACTION for class TRANSACTION, lib entry _TYPEDEF
      Executing instruction at line 2326
  End class function +DESTROY for class TRANSACTION, lib entry _TYPEDEF

Windows アプリケーション イベント ビューアを確認したところ、次のように表示されます。

Fault bucket , type 0
Event Name: CLR20r3
Response: Not available
Cab Id: 0

Problem signature:
P1: txintf.exe
P2: 11.1.18.1
P3: 4cec7a53
P4: System
P5: 2.0.0.0
P6: 506c18e6
P7: 2d4a
P8: 36
P9: System.ObjectDisposedException
P10: 

これらの問題は、PB11 プロジェクトを PB12 Classic に移行したときに発生し始めたと言われました。それと関係があるかどうかはわかりませんが、私はそれをそこに捨てようと思いました.

誰かが同様の問題を経験したことがありますか、またはこの問題を診断するために使用できる追加のヒントはありますか?

ありがとうございました。

編集: Windows イベント ログにエラーが表示されることがあることに気付きました。以下にいくつかの情報を示します。

Faulting application name: txintf.exe, version: 13.0.2.3, time stamp: 0x4cec7a53
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18015, time stamp: 0x50b83c8a
Exception code: 0xe0434f4d
Fault offset: 0x0000c41f
Faulting process id: 0x2120
Faulting application start time: 0x01ce0099b3021b60
Faulting application path: MyApplicationPath\txintf.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll

まれに、ジャストインタイム デバッガーがポップアップし、System.ObjectDisposedException の例外がキャッチされたことを示す場合もあります。その情報から判断すると、何かがアクセスしている、破壊されたオブジェクトがあるようです。

デバッガーでコール スタックを確認しましたが、Application.Close() イベントの後に何もないようです。

4

1 に答える 1

1

オブジェクトの破壊は私を私の理論に戻し、私がかつて見つけたもう1つのケースを思い出させました。これは自動インスタンス化されていないNVOであり、インスタンス変数として自動インスタンス化されたNVOがあります。はい、私は死んだ馬を打ち負かしているように聞こえますが、それは私が今まで聞いた唯一のケースです。デバッグのアイデアの1つは、すべてのオブジェクトのDestructorイベントにスクリプト行を入れ(すべて継承されますよね?)、そこにブレークポイントを置き、問題の一部であるかどうかを絞り込むことです。

于 2013-02-04T23:39:05.070 に答える