我有一个 1990 年代早期编写的遗留 Motif 应用程序(我无法在 QT 中重写 UI,甚至无法在不经过耗时的安全评估的情况下广泛修改应用程序)。这个应用程序曾经在 AIX 上运行,它在密集使用的情况下连续运行了数周,并且非常稳定。我们现在已经将它移植到 Linux 上。在长时间的持续 Beta 测试期间,该应用程序大约每周崩溃一次,并显示以下消息。
失败请求的错误:BadWindow(无效的窗口参数)
失败请求的主要操作码:4(X_DestroyWindow)
从那以后,我了解到可以使用自定义 X11 错误处理程序(默认的 X11 错误处理程序仅打印错误消息并退出)忽略这些错误,如下所述:
http://motifdeveloper.com/tips/tip29.html
我已经实现了一个自定义 X11 错误处理程序,它忽略了该文章中描述的 BadWindow 错误。所以我的问题是:比我更了解 X11 开发和 X 服务器内部工作原理的人能否告诉我 BadWindow 错误是否真的可以像那样被忽略?
PS 我将尝试通过在同步模式下运行我们的应用程序来进一步调试它,但这很慢,因为我无法按需重现此错误。任何有关调试 BadWindow 错误的提示也将不胜感激。