きっかけ
A2Bケーブルの挿抜試験に於いて、挿抜しているケーブルよりもA2Bデイジーチェーンの後段にあるデバイスが検出できなくなり、プロセスがクラッシュしてしまった。
結論
プロセスがクラッシュした原因はプロセスとスレッドの動作で、不具合の発生している期間だけ存在する再入可能ではない制御への同時アクセスが原因だった。ただ、これは造りがショボいだけなのが理由なので割愛します。
この現象の何に注目したいか?
気になるのは挿抜対象のデバイスがDiscovery出来ないのではなく、それより後段のデバイスがDiscovery出来なくなることでした。後述になりますが、本来であればMaster-Device A間のケーブルを挿抜しているのだから、Device Aも存在しない状態になって貰わないと全復旧させるか部分復旧させるか区別がつかない不安定な状態です。
調査結果
以下のような原理で後段のデバイスが認識できなくなる様でした。
最後に
ケーブル挿抜とはしていますが、原因はチャタリングが引き金になっています。ただの挿抜だけでは現象は発生しないのです。技術者としては報告されてきた内容から様々な視点で検証する必要のある案件でした。これで少しはレベルアップできたかな?