【发布时间】:2014-01-19 05:07:38
【问题描述】:
我有一个 1990 年代早期编写的遗留 Motif 应用程序(我无法在 QT 中重写 UI,甚至无法在不经过耗时的安全评估的情况下广泛修改应用程序)。这个应用程序曾经在 AIX 上运行,它在密集使用的情况下连续运行了数周,并且非常稳定。我们现在已经将它移植到 Linux 上。在长时间的持续 Beta 测试期间,该应用大约每周崩溃一次,并显示以下消息。
请求失败的错误:BadWindow(无效的窗口参数)
请求失败的主要操作码:4 (X_DestroyWindow)
我后来了解到可以使用自定义 X11 错误处理程序(默认 X11 错误处理程序仅打印错误消息并退出)忽略这些错误,如下所述:
http://motifdeveloper.com/tips/tip29.html
我已经实现了一个自定义 X11 错误处理程序,它会忽略该文章中描述的 BadWindow 错误。所以我的问题是:比我更了解 X11 开发和 X 服务器内部工作原理的人能否告诉我是否真的可以像那样忽略 BadWindow 错误?
附注 我将尝试通过在同步模式下运行我们的应用程序来进一步调试它,但这很慢,因为我无法按需重现此错误。任何有关调试 BadWindow 错误的提示也将不胜感激。
【问题讨论】:
-
这取决于你所说的“可以”是什么意思。它会断开您与互联网的连接并吃您的午餐吗?可能不是。应用程序会像什么都没发生一样工作吗?可能不是。该错误本身并不致命,但它是应用程序逻辑中某些错误的表现,那个错误很可能很严重
-
到目前为止,我没有看到任何不良影响,但我将对其进行详尽的测试。此外,这只发生在 Linux 上,而不是 AIX 上,并且 UI 多年来没有发生重大变化。
标签: linux error-handling x11 aix motif