4F
さて、NUSAは。一体どのようにして、
何しろ『自動分析ツールで取り扱うことができ』ず、かといって『人間のプログラマにとっても、複雑すぎて完全に把握できない』と。
今のシェヴラみたいに。蜘蛛の巣のごとく張り巡らされた道路網で、それぞれ目的地へと向かう車たちが無数に湧いているとき。いったい、どこが原因で渋滞が起きるのか……を解析するのとは、似て非なる話だろう。路上の自動車なら、走行中に(じぶんと同じ)自動車を産み落としたり、逆に回収したりはしないから。
そうした違いはともかく。現代では、殆どの車にナビゲーション・システムが装着されているので。現在の位置を逐次データ通信で教えてもらえば、静止衛星で睥睨するかのごとく、地上を走り回る車たちをスクリーン上で目視できるようになるから。地図と重ねて、ずうっと眺めているだけでも。わかることは、ありそうである。
そして、様々な「
実際、NUSAは。ある「手順」が別の「手順」を呼び出し、その「手順」がまた別の「手順」を呼び出すといった有様を、既存の解析ソフトを使って「経路図」に
要するに、それぞれの「手順」を楕円形で表し、そこから別の「手順」の呼び出しを。楕円と楕円を結ぶ矢印線で表したのである。その「仕事」の状況によって、呼び出される「手順」も違ってくるとすれば、スタート地点の楕円から、色々な楕円を経由して、下流へと枝分かれしていく図になりそうである。
ところが、NUSAが「補遺A」に載せた解析結果は。やや「末広がり」ではあるものの、所々ギュッと絞られた形状であり。さながら「ハング・グライダーの乗り手がパラシュートで飛び降りた直後」のような、奇妙な絵面であった。
種明かしをすると、NUSAは。
いったん枝分かれして生じたもののうち……上流へと「戻す」矢印が生えた楕円と、そこへ矢印を伸ばす別の楕円……を含む、経路の中にあるものを残して。それら以外を、楕円も矢印も全部取り除いてしまったので。下流端の楕円が、上流に「戻る」矢印を持つものだけとなり。またその上流も。そのような楕円へと矢印を伸ばす経路の楕円のみが残っているために、そんな奇妙な有様になったのだ。
その状態で、図に残った「手順」は24種もあって。その全てが循環するループの一部であるとするなら、この先いったいどうすれば?……と、途方に暮れる感じが漂うのである。
実際、NUSAも。いちどは、音を上げたようなことを書いているのだ。
NUSA:『この図から直ちに読み取れるのは、このグラフ上で取り得る経路の数が、ループに参加しないノードを全て潰した場合でも、あまりに多いことである。循環があるために取りうる経路の数は無限である。視覚化による補助が解析を幾分シンプルにしてくれるとはいえ、完全な人力解析は不可能であろう。』
じゃあ、ギブアップなのか?
……いや、まだ続いている。
この図の解析対象となったコードは、ある「手順」を開始ポイントとしている。多数の矢印は、たった一つの楕円から始まっているのだ。しかし、そこから。状況によって呼び出す楕円……つまり「手順」が違うとすれば。特定の呼び出しが連鎖した状態は、「特定の処理」をしている状態であって、それとは別の連鎖をした状態は、また「別の処理」をしている状態である……ということになる。そうした、「特定の処理」をしている状態が終了すれば、呼び出し元の楕円に復帰していって、さらにその呼び出し元の楕円まで復帰するか、あるいは踏みとどまって別の楕円を呼び出すかするだろう。
この妙ちくりんな図形を、わかりやすく「雷雲」に例えれば。ある楕円の連鎖が、繋がったままビカッと発光して。一旦暗くなったあと、また別の連鎖がビカッと発光する……というような。真っ暗な中を、次々と走り抜ける稲妻のイメージだ。まあ本当の稲妻なら、続けて同じような経路で光るようなことはないのだろうが…。
しかし、そういえば。この図では上流の楕円を呼び出す「戻って」いく矢印もあるのだから。循環ループとなる場合も、ある筈で。連鎖が輝くといっても、その先端がいつまでも次の楕円に連鎖していくのであると、なかなか光り切る(=実際にやらせたい処理が完了する)まで行かないことになる。コンピュータが実行する「
おそらく。この図を生成する際に、まずNUSAが用いたのは。「この場合にはこっちを呼び出す」という際の前段:つまり条件の部分が。本当に満たされることがあるかは考慮せずに、新たな「手順」の呼び出しが指定されていれば、ただちに「矢印を生やした先に楕円をぶらさげる」ような手法なのだろう。
そのうえで。どういったデータを与えた場合に、どの楕円に「戻って」いくかを、実際に動かしてみて調べたのだろう。その際、「戻り」に参加しようがない楕円を呼び出してしまったとき、つまりこの図の「外」に出てしまった場合は。それ以上追わないでよい、とみなして。少しずつデータを変えながら与えてみる……補遺Aでは説明されていないものの、おそらくある程度は「自動化」した手法をとったのだろう。とはいえ、取り込むデータは一種類ではないだろうし、直前に稲妻を光らせた連鎖にて、どの呼び出し元まで復帰していたか?……も影響するから、全ての組み合わせを試すことはできなかった筈だ。
そうした事情が、「一般的には無理なのだが、今回は正確なホニャララが決定できた」というような……何とも言い難い、次のような説明となって現れたのではないだろうか。
NUSA:『一般的に人力の(静的)解析では実行時に状態がどうなるかは決定できないが、ここで再帰が生じるような場合、この
雷雲のなかの、ほんの片隅……一部分の連鎖だけが。間接的
その連鎖は図の中で。二つの輪を一点で繋げた形状をしていた。即ち、間接再帰は二か所で生じることにはなるが、もう他のケースは考えなくていい……これだけを考えればいいのだ。
NUSAは凄い! よくぞここまで追い込んだ。そう感動しながら読み進めると、驚くことになるだろう。
NUSA:『ノヴァルの技術者も、このソフトウェア再帰を確認した。より大きなUA問題に関して、再帰がどんなインパクトを有しているのか定かではない。再帰ループが1つか2つかを言う以前に、ECTSのなかにある再帰の他のサイトは解析されないまま残っている。』
……は?
それだけ……?
そう、これで。
これで終わりなのである。
そのあとは、コードの解析とは違う次元の話――もし再帰が無限ループとなるのなら、
A:『ノヴァルのウォッチドッグ・スーパーバイザーは、メジャーなタスクの生死について常時検知することを許さない設計なのです。それが全てです。監視しないのです。監視するように設計されていないのです。』
まだある。
A:『さらにノヴァルは、オペレーティングシステムから「おおい、このタスク、きちんと動いてないぜ!」と知らせてくれるのに、その情報を投げ捨てるためのコード行を入れてまで、タスクの死を検知しないようにしていました。タスクに問題が発生したと知らせるオペレーティングシステムからのエラー・コードを、彼らは無視していたのです。』
この件も、ノヴァル側の反対尋問では出てきていない。
NUSAの解析に戻ると。補遺Aには電制スロットルシステムにおける
NUSA:『ECTSでは、締め切り違反が生じないよう必ず保護をする設計はされていない。しかし、こうした問題が生じて、イベント・キューが満杯になれば、オペレーティングシステムがこの問題を検知して、ウォッチドッグ・タイマーを殺し、それで更にシステム・リセットを起こすことになる。同様に、よくない再帰によって無限ループが生じれば、これもウォッチドッグがリセットを起こす原因となるし、おそらくはスタック・オーバーフローもそうであろう(未確認)。』
NUSAですら、この再帰ループ専門の「番犬」がいない前提で、再帰含みの「仕事」が終わらず、CPUの前で一列に並んでる他の「仕事」から「はやくしろー」と苦情が出るようになって、上位の監視番犬が腰(?)を上げることを期待しているのだ。
そして、この点についても。バイエル証人は、次のように証言していた。
A:『ノヴァルの設計においては、CPU過負荷の監視でも同じようなことになります……きちんと動かないのです。CPU過負荷とは、やる仕事が爆発的に多くなり、全てのタスクをこなす所要時間が長くなりすぎている状況です。CPUをなかなか使わせてもらえないと、タスクは一時的に死んでいるようなものですが、ノヴァルのウォッチドッグのもとでは1.5秒まで過負荷が許容されます。時速60マイルでは……だいたいフットボール場を通過する位の時間で、そこでどんな異常動作が起きても不思議ではありません。』
言い方は違うが、バイエル証人も。最終的には、なんとかCPU過負荷が解消されることを。否定はしていない。
しかし。そもそも、スタック・オーバーフローとは。必要な「時間」が長くなりすぎることではなく、再帰にて次々呼び出されたバケツが溢れ出して、オペレーション・システムが使用中のバケツを上書きするという、必要な「資源」が多くなりすぎる方が問題であった筈。
つまり、CPU過負荷に至らなくても。バケツが溢れて、スタック・オーバーフローが起きることはありえるのだ。だから、NUSAの説明は肝心な点を有耶無耶にしてると思う。
そもそも、再帰の解析を断念しておきながら:「再起動がなかったという話なので、再帰も有限なのでしょう」と結論されるのは……正直な話、強い抵抗がある。しかも、他の事項の解析も。これと似たり寄ったりの出来なのである。
「補遺A:ソフトウェア」が、こんな有様なのに。
NUSA:『静的解析・論理モデル試験・再帰テスト・そして最悪ケース実行タイミング分析を用いて、ソフトウエアの徹底的な試験と解析が行われた。これらのツールを用いた研究中、単独でUAの原因となるソフトウエア欠陥は発見されなかった。』
こう、本体の報告に書いちゃうの。「間違いではない」としても、いかがなものだろうか?
………………………………………………………………………
……などと。
嫌ぁなモヤモヤに捉われていた僕は、すっかり気付くのが遅れてしまった。
いつの間にか、追いついてきていた……あの怪しい、チャコール・グレーのセダンに。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。