QtCreator(Qt 5.5)を用いて作成したアプリケーションをLinux Yocto(4.2)で実行しています。
このアプリケーションが不定期(数時間~数日)でフリーズしてしまうため、原因の調査方法を模索しています。
アプリケーションが動作するPCは複数のコアで構成されています。
具体的な事象としてはアプリケーションが無応答になるという状況です。
1秒定期で時刻を表示していたとして、その表示更新が行われなくなるイメージです。
システム構成はアプリケーション(プロセス)とスケジューラ(プロセス)が存在し、別々のコアで動作しています。
※スケジューラの主な機能は定期的にメッセージを配信するというものです。
※時刻の表示はQtの機能を用いています。
フリーズ発生時、アプリケーションとスケジューラの両方が停止していました。
試しにアプリケーションで無限ループさせてもスケジューラはフリーズせず、
逆にスケジューラで無限ループさせてもアプリケーションはフリーズしないことは確認済みです。
アプリケーションとスケジューラの間でデッドロックが発生しているような状況です。
但し、完全にフリーズした状態に至る前、アプリケーションの時刻表示更新がしばらく(30~40秒)止まった後、再開されるという動作を確認しています。
この「しばらく止まった後、再開する」という点から考えるとデッドロックでは無いのではと想像しています。
Linux上でのデバッグについて情報が乏しいため、情報を集めいています。
アプリケーションをビルドし直すと状況が変化してしまうため、できれば現状のアプリケーションのままで検証が行えると良いと思っています。
ちなみにQtではdelete後にnullを設定することでガベージコレクションの対象になりやすくなるということがありますでしょうか?
アプリケーションのフリーズを調査するためのツールや手法等について御教授願います。