早上好,
我的 PowerBuilder 12.1 Classic (Build 6639) 和生成的 PowerBuilder 应用程序似乎都遇到了问题。我们目前遇到的问题是应用程序(或者,如果我们通过代码运行,IDE)在关闭主 MDI 后崩溃。不幸的是,崩溃没有一致的模式。我可以在 MDI 打开时立即关闭它,有时它会崩溃,有时它会正确关闭。
最初,我认为 Application 对象的关闭事件有问题,或者在引发 systemerror 事件的地方发生了一些事情。我通过关闭事件进行了调试,每一行都成功执行,但应用程序仍然崩溃。
我想我会尝试在应用程序上使用 /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
Just-In-Time Debugger 也有一些罕见的时候会弹出,说明 System.ObjectDisposedException 的异常已经被捕获。从该信息来看,似乎有一个已被破坏的对象正在被某物访问。
我通过调试器检查了调用堆栈,在 Application.Close() 事件之后它似乎没有任何内容。