

windows10上でQt5のGuiアプリケーションを長時間（30分だったり２時間だったりとまちまち）動かすと、「アプリケーションは動作を停止しました」などのエラーが起きてしまいます。  
プログラムはArduinoとシリアル通信してデータを受け取り、それをQPainterでQWidgetを継承したクラスに描写するようなプログラムです。

[![エラーの画像](https://i.stack.imgur.com/ccU3M.jpg)](https://i.stack.imgur.com/ccU3M.jpg)

エラーを見ると、配列で範囲外にアクセスしていることが原因のようですが、そのようなことが(少なくとも表面的には)おこるようにはしていないつもりです。原因についていろいろ調べたところ、dllの不足、Debugモードでコンパイルした実行ファイルを使ったから、と思い合ったたのですが、  
dllをそろえて他のQtを入れてないPCで動かしても、releaseモードでビルドしたものをつかっても不定期にエラーで止まります。  
serial通信が問題なのでしょうか。よく分かりません。  
詳しい方、どうか助けてください。お願いいたします。


CC BY-SA 3.0
2017-10-29T12:20:02.643
39124
2017-10-30T00:26:36.940
2020-06-17T08:14:45.997
-1
25968
question
qt qt5
Qtのアプリを長時間動かすと停止するエラー


エラーは`QList`クラスの`operator[]`メソッド中のASSERTION(`Q_ASSERT_X`)で明示的に検知されており、`qFatal`関数(マクロ?)によって出力されています。

＃[`qFatal`の文書](http://doc.qt.io/qt-5/qtglobal.html#qFatal)には、デフォルトではプログラムを終了させる、とあるので、そのせいで終了しています。(クラッシュしているわけではない)

`QList::operator[]`の呼び出し元がわからないと原因はわからないと思いますので、デバッガでプログラムを起動させて、事象発生時のスタックトレースを確認し、呼び出し元を特定するのがよいと思います。

＃`QList`は至る所で使用されているので、呼び出し元を予想するのは困難と思います。


CC BY-SA 3.0
2017-10-30T00:26:36.940
39132
2017-10-30T00:26:36.940
20098
39124
answer