私は小さな Qt4 (C++) アプリケーションを作成しましたが、これはリストを表示する以外にはあまり機能しません。これは QDialog なので、エスケープを押すと閉じます。
ここで、これ (実行してから閉じる) を 3 回から 8 回続けて行うと、X セッションがクラッシュし、ログイン画面が表示されます。プログラムを正常に閉じるのではなく、プログラムを強制終了した場合、これは発生しません。
当然のことながら、私は自分のコード、特に終了時に実行されるコードに目を通しました。ただし、これは、以前に割り当てられたいくつかの変数を削除する小さなデストラクタの 1 つに過ぎません。これらの行をコメントアウトしても (-> 終了時に実行されるコードはもうありません)、何も変わりません。QApplication::exit() を呼び出すと、同様にクラッシュします。
私は現在、この開発システムで Gnome を使用しています。
何を探すべきかよくわかりません。何か案は?
編集:犯人を見つけようとして、コードを少しずつコメントアウトしました。ただし、QDialogを示すコードを除いて、基本的にすべてを削除しましたが、クラッシュはまだ発生しています。
コードは次のとおりです。
main.cpp
#include <iostream>
#include <QApplication>
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
return QDialog().exec();
}
ご覧のとおり、このプログラムは何もしません (QDialog を表示する以外は、それは Qt であり、私のプログラムではありません)。2 行のコード (+ 何百万人もの人々が毎日使用しているため、動作するはずの Qt コード) がどのように X セッションをクラッシュさせるのかわかりません。これまでのところ、Fedora 16 と Gnome 3 のみでテストしました。
Edit2 : KDE と LXDEを使用して同じシステムでテスト (同じバイナリ) しましたが、クラッシュはありませんでした。また、Gnome、KDE、および LXDE を使用する Ubuntu でも、クラッシュは発生しません。Gnome3/Fedoraと何か関係がある...