我写了一个很小的 Qt4 (C++) 应用程序,除了显示一个列表之外,它并没有做太多的事情。它是一个 QDialog,所以按 Escape 会关闭它。
现在,如果我连续执行此操作(运行,然后关闭)大约 3 到 8 次,我的 X 会话会崩溃并且我会看到我的登录屏幕。如果我杀死我的程序而不是优雅地关闭它,这不会发生。
自然地,我查看了我的代码,尤其是退出时执行的代码。然而,这只是一个很小的析构函数,它删除了一些以前分配的变量。将这些行注释掉(-> 退出时不再执行代码)不会改变任何内容。调用 QApplication::exit() 也会崩溃。
我目前在这个开发系统上使用 Gnome,如果这很重要的话。
我真的不知道要找什么。有任何想法吗?
编辑:试图找到罪魁祸首,我已经逐条注释掉了代码。但是,我现在基本上删除了所有内容,除了显示 QDialog 的代码并且崩溃仍然发生。
这是代码:
主文件
#include <iostream>
#include <QApplication>
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
return QDialog().exec();
}
正如你所看到的,这个程序什么都不做(除了显示一个QDialog,但那是Qt,不是我的程序)。我不明白 2 行代码(+ Qt 代码,应该可以工作,因为每天有数百万人使用它)如何使我的 X 会话崩溃。到目前为止,我只在带有 Gnome 3 的 Fedora 16 上对其进行了测试。
Edit2:在同一个系统上用 KDE 和 LXDE 测试它(相同的二进制文件),没有崩溃。同样在带有 Gnome、KDE 和 LXDE 的 Ubuntu 上,没有崩溃。必须与 Gnome3/Fedora 有关...