見出し画像

TWBlueScan:今度こそ完成かと思ってプログラムを停止したら大量のエラーがでた

療養中の老猫は、雨上がりで涼しくなったので久しぶりに庭に出ました。少し休憩した後、いつもの見回りコースを歩こうとしていました。ふらつく足取りで途中まで行ってから諦めたのかウッドデッキに戻ってきて、また休憩していました。外に出られてよかったです。

さて、昨日の修正で完成したと思っていたBluetoothのデバイス情報収集ソフトTWBlueScanですが、24時間稼働させて今朝確認してみたらamd64版はエラーを出力してPCが停止していました。Raspberyy Pi版は順調に稼働していましたが、プログラムを停止してみると、

goroutine 1232529 [select]:
github.com/godbus/dbus/v5.(*signalChannelData).deferredDeliver(0x35c3ebe8, 0x7f02d080)
	/Users/ymimacmini/go/pkg/mod/github.com/godbus/dbus/v5@v5.0.3/default_handler.go:318 +0x70
created by github.com/godbus/dbus/v5.(*signalChannelData).deliver
	/Users/ymimacmini/go/pkg/mod/github.com/godbus/dbus/v5@v5.0.3/default_handler.go:313 +0xc8

のようなエラーが大量に出力されました。PCが停止したamd64版も同じようなエラーでした。
どうもビーコンの検知をするためのGOルーチンが大量に生成されて、それが残っているのが原因のようです。元にしたGO言語のパッケージのサンプルコードの時点から問題があったようです。利用している関数の中のコードを読んでみましたが何となく怪しいので思い切ってビーコンの検知をやめることにしました。そのうち良いBluetooth対応のGO言語パッケージを見つけたらまた考えます。
今回はデバイスの検知とオムロンの環境センサーの情報収集だけにします。
というわけで、この修正を行ったバージョンを24時間動作させて様子をみます。
このプログラムをハードウェアエラーが出ていたPCで動作させても同じエラーログが出力されるのでビーコンの処理とは関係ないようです。

明日に続く




開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。