3

組み込み Linux システム (TI AM335x ベース) で Qt5.4.0 アプリケーションを実行していますが、実行が停止し、デバッグに苦労しています。これは QtWebKit QML の例 (youtubeview) ですが、他の QtWebKit の例も同じように実行しているため、私のシステムに基づいた WebKit です。

アプリケーションを実行すると、1 秒ほど実行された後、メッセージが表示されずに終了します。syslog または dmesg にも何も報告されません。strace で開始すると、次の futex メッセージが表示されます。

futex(0x2d990, FUTEX_WAKE_PRIVATE, 1)   = 0
futex(0x2d9ac, FUTEX_WAIT_PRIVATE, 7, NULL <unfinished ...>
+++ exited with 1 +++

その後、停止します。あまり役に立ちません...次はGDBでこれをデバッグすることでしたが、これを実行しようとするとGDBがクラッシュします:

-sh-4.2# gdb youtubeview
GNU gdb (GDB) 7.5
Copyright (C) 2012 Free Software Foundation, Inc.
...
(gdb) run
プログラムの起動: /usr/share/qt5/examples/webkitqml/youtubeview/youtubeview
/home /mike/ulf_qt_450/ulf/build-ulf/out/work/armv7ahf-vfp-neon-linux-gnueabihf/gdb/7.5-r0.0/gdb-7.5/gdb/utils.c:1081: 内部エラー: 仮想メモリを使い果たしました: 64652911 バイトを割り当てることができません。
GDB 内部の問題が検出されました。

この問題は、最初に main にブレーク ポイントを設定した場合でも発生し、実行を開始するとすぐにスタックしてメモリ不足になります。

  • ここで問題を切り分けるのに役立つ他のツールや手法はありますか?
  • おそらく、メモリの使用を制限したり、この Qt プログラムがクラッシュした理由についてさらに情報を提供したりするための GDB への引数はありますか?
  • おそらく、FUTEX が保持されて失敗している理由を理解するために使用できるいくつかの FD またはシステム変数はありますか?

今、この問題をどこに持っていくべきかわかりません。

Qt コード自体は非常にシンプルで、ここで問題が発生することはないと思います。

#include <QGuiApplication>
#include <QQuickView>
int main(int argc, char* argv[])
{
    QGuiApplication app(argc,argv);
    QQuickView view;
    view.setSource(QUrl("qrc:///" QWEBKIT_EXAMPLE_NAME ".qml"));
    view.setResizeMode(QQuickView::SizeRootObjectToView);
    view.show();
    return app.exec();
return 0;
}
4

1 に答える 1