こんにちは
ソフトな道をほのぼのと今日も歩きます。
今回は、前回の逝ってしまう原因調査の続きです。
スレッドがsnd_pcm_writei()実行中に”-EBADFD”が入ってくると、
そのエラーに対する処理は入っていない為
リトライ発生という無限ループに入っていました。
調査したところ、そもそも、EBADFD自体でるのがNGということが分かりました。
スレッド内でクローズ処理をしていたのですが、
オープン失敗に対してもクローズ処理をしているところがありました。
要するにnullに対してのクローズ処理。
お恥ずかしい限りですw
また、FDファイルディスクリプタ自体が不定な箇所がありました。
fopen()とopen()のエラー判定は違うことに対処できていなかったです。
fopen()の失敗はNULL(0)
open()の失敗は-1
です。
FDはそれぞれ1以上、0以上となるので、エラー判定はしっかりしないと、数百回に一回の不具合につながります。
今回は以上です。
[環境]
私の使用環境は VMware 上でUbuntu14.04を使用しています。
コンパイラ: arm-linux-gnueabihf-gcc
今日から新入社員が入ってきます。
電車内でおしゃべりしているが、飛沫感染させないようにしてもらいたいですね。
0 件のコメント:
コメントを投稿