事故記録(trouble record)


事故記(trouble record)のことを過去トラとかいう場合がある。どこの組織・個人でも、大事。

自分の事故記録は何度か作成した。

もう一度作り直してみる。

100件になるまで順次追記。

事故1. 電子集積素子(Integrated Circuit)から炎があがった

新人研修で、回路の半田付けをして、100万円以上する測定器で測ろうとした。

回路の半田付けを間違えたらしく、回路の一つの電子集積素子(Integrated Circuit)から青白い炎があがった。

あわてて測定器から抜いて電源を切ったた。

対策1 半田付けをしたら、まず導通試験をする。

導通試験器(tester)は、100円ショップでも売っているくらい安価で、導通試験器が壊れるのは痛くない。
まず、導通試験器の内部電池だけで導通を測定すれば、回路は壊れない。

導通試験は、まず接地(earth)から。次に電源線または抵抗をつけた線の抵抗値。抵抗の色符号(color code)は、細くて認識しにくい。電源を入れる前に、抵抗値が回路通りかを確かめるのは大事。抵抗値を測定するときに、どこかが短絡(short)していれば、それも分かる場合がある。

事故2 SCSCIケーブルでHDDとPCを繋いだら煙がでた。

外付けHDDの箱に、SCSIという記載があったのでSCSIケーブルでHDDとPCを繋いだ。

対策2 マニュアルを見て表示の上書き

すぐに電源を切り、接続を切った。
煙が出た後で、マニュアルを見たら、パラレルケーブルで接続するHDDとの記載があった。マニュアルと実物で記述が違った。箱が足りなくて違う製品の箱に入れて出荷したらしい。責任の第一は製造・販売側にあるが、購入者も買ったら、すぐにSCSIの表示の上から「並列(pararell)」という表示を貼るべきだった。

事故3 アセンブラで書いたプログラムを動かしたらFDをフォーマットし始めた。

アセンブラで電動機制御(motor control)のプログラムを書いていた。FD(floppy disk)での作業で、アセンブルしてバックアップを取らずにすぐに動かした。

命令が間違っていたか、アドレスがずれていたか、いきなりFDのフォーマットを始めた。

対策3 プログラムを作ったら動かすまえにバックアップを取る

今なら開発環境の設定で、コンパイル・アセンブルする前か、実行する前に自動的にバックアップを取る機能があればよい。

あるいはdockerハブ上と、手元のPCの両方に保存していればいいかもしれない。

事故4 プログラムを書いて走らせたら1日なんの出力もなかった。

卒業研究でFORTRANで連立微分方程式のPade近似による数値解法のプログラムを初めて作成した。

仕事に就いて、計算機の管理者になったので思う存分使おうと、4倍精度で全値の検算を行おうとした。

1日経っても結果が出てこない。

対策4 計算途中経過を出力する

計算の途中経過を出力するようにして、もう一度走らせた。

3日間途中経過の出力から推測すると、計算を終わるのが3年後と分かった。

研究の主題を数値計算から数式処理に変更した。

事故5 Microsoftのライブラリが大きさ、日付が同じものがあった

Microsoftの設計環境で、プログラムを作ったがうまく動かない。

なにかのライブラリの不具合の可能性を探るために、ライブラリの日付と大きさを確認した。

Microosftでは、ある時期まで、異なる版なのに、同じ日付で出荷することがあったらしい。大きさが一緒だと、違いがあることに気がつかないことがある。

対策5 ライブラリは2進数(binary)比較をする

ライブラリの大きさと日付だけで確認するのではなく、二進比較(binary compare)するソフトウェアで同一かどうか確認する。

事故6 ライブラリの不具合報告

Visual Basicで直列通信(serial transformation)プログラムを書いていたら、うまく動かなかった。

調べたら、当時の直列通信のライブラリは、第三者のライブラリの部分集合を同梱しているものだった。

対策6 本家で確認

部分集合(subset)のライブラリでの試験で不具合があったら、全部集合(full set)のライブラリで再試験しよう。

事故7 MicrosoftのTCP/IPライブラリ

Visual BasicでTCP/IPのプログラムを書いたら、通信しなかった。

対策7 利用者の多い言語で書き直す。

同じ論理で、CとJAVAで書いて見て、使っているライブラリを確認した。

ある言語でうまく動かなければ、利用者の多い言語で書き直して、同じライブラリを利用しているか、ライブラリの呼び方の違いがないかなどを確認する。

対策7.1 製造元にすぐに報告する。

ネットで検索してもライブラリの不具合の報告があがっていなかった。Microsoftに報告を送った。数日後に、Webにライブラリの不具合の知らせが載った。

不具合はすぐに製造元に報告する。

事故8 ネットワークのソフトだけ動作しない

Intel 386CPUのPCで、ヒートシンクという冷却装置がついていた時代の頃。

なぜか、21台あるPCのうち、1台だけでネットワークが繋がらない。

おかしいなと思って箱をあけたら、その1台だけ、誰かがヒートシンクを借り出していて、CPUが熱くなっていた。

なるほど、このCPUでは、最初に熱暴走する回路が、ネットワーク処理を行なっている部分らしい。あるいは、ネットワークの処理をしようとすると熱くなりすぎて暴走するらしい。

対策8 冷却装置の存在と動作は確認しよう。

事故9 印刷機(printer)が動かない。

1辺が1メートル以上あり、大型印刷機(line printer)で、扉の中に回路がある型のもの。

印刷機が動かないので保守に来てもらった。
扉を開けて、電気振動二次元表示器(oscilloscope)で測っても、どこも悪いところはない。

回路を見るとZ80という8bit CPUを複数使って処理している。

対策9

扉を閉めて動作させようとすると、不具合が出た。
なるほど、扉を開けると冷却できて走るが、閉じると熱が篭って暴走するらしい。
ひとまず回路を交換して様子を見ることに。

事故10 Ethernet Bridgeが暴走する

二つの建物の間のネットワークをEthernet Bridgeで中継していた。

月に一度くらい、ネットワークが切れることがあった。

Bridgeの電源を切って、数時間すると動くことがあった。

対策10

高い機器で構成するよりも、安価な機器で構成すれば、不具合があっても、交換で済む。

特に、同じ機器だけで構成すれば、予備を1台置いておけば、なんとでもなる。

特別な機能を持った機器で構成するのは止めよう。

事故11 X-Windowsのプログラムの不具合が取れない

X-Windowsのプログラミングの教育に参加した。
前日、あるプログラマの家に泊めてもらい、徹夜で議論したり、アニメのLDを見たりした。
X-Windowsのプログラミングの説明の半分は寝ていたかもしれない。

講師が、まだ不具合があるけど取れてないという話をされた。じゃ、不具合を探そうと、一行づつプログラムの挙動を出力しながら調べた。

対策11

変数は必ず、番地(adress)と値(value)の両方を出力する。

入力、出力をすべて出力して、不具合を発見。

講師に喜ばれた。なんですぐに分かったのと聞かれ、仕事が試験ですからと答えた。

misra_c.h
#define PR1x(a,b) (void)printf(" "#a  " = %" #b "=%8x\n", a,a)

MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

事故12 USB逆挿し

USBの補助記憶装置を購入してきた。
接続部分の外箱がなく、どちら向きでも刺せるような形状になっていた。

何気なく挿して見たら、焦げるような匂いがしたので外した。確かめると逆挿しできる構造になっていた。

対策12 逆挿し不可のはずの装置も確かめてから挿すこと

まず、逆挿し可能かどうかを確かめる。
逆挿し可能な機器は、どちらの向きに挿すかを確かめる。
逆挿し不可の装置でも、欠陥により逆刺し可能になっている可能性がある。実際に逆刺し可能かどうかを確かめてから挿す。

対策 12.1 記録を残す。

販売店に返金してもらい返した。
写真を撮っておかなければいけなかった。

事故13 ピン数の少ない機器を挿した

8pinのICソケットに、6 pinのICを挿した。
たまたま、炎も出なければ、焦げた臭いもしなかった。
動作しなかっただけだった。
ICの名称を調べたら、少しだけ番号が違っていた。

対策13

ICの名称は実物では小さくて、薄くてちゃんと確かめずに挿してしまうことがある。

ICはちゃんと確かめてから挿そう。また、挿したら、各pinの抵抗値を測定しよう。異なるICを挿していると測定結果が異なる場合がある。通電する前に測定していれば、その時点で分かることもある。

事故14

保守会社の人が来る時だけ不具合が出ない。
計算機が起動しなかったり、計算機が反応しなくなったり、画面が表示しなくなったり。
いろいろな事象で、保守会社の方に来てもらうと、来た時だけ現象が出ないということが2回続いた。

対策14

3回目からは、警告の文字を記録したり、画面をファイルにしたり、画面をファイルに取れない状態では、カメラで写真を撮ったりして、現象を確認できるようにした。

事故15 ネットワークが繋がったり繋がなかったりラジバンダリ。

上記のブリッジの不具合の場合は、全くネットワークがつながらなかたったが、その他の場合は、繋がったり、繋がらなかったりしたことがあった。

当時は、Ethernetに、メインフレームの通信とMacintoshのネットワークと、TCP/IPとそれ以外にいくつかの通信規約の網が混在していた。

他にも、MS WIndowsの通信規約NetBeui、IPX/SPXなどいろいろ走っていた。

対策15

一つづつ、通信規約を止め、どの通信規約が、どの通信規約に悪影響を与えるか確かめた。
メインフレームが、定期的に各端末の生存確認をするパケットが、Macintoshのネットワークを阻害していることを確かめた。

事故16

あるコンピュータのパソコン用通信エミュレータの移植をした頃。ホスト側のプリンタで、印刷が1行置きになる現象が時々現れた。エミュレータをプログラムを止めて、再起動させると、作業の続きができるので、不便さはほんの少し。
卒業研究の傍ら、サービスで移植していた。卒業研究のプログラムの方が忙しく、不具合取りは、その年には完了しなかった。

対策16

通信の時系列図(sequence chart)は書いていたが、
印刷機の状態遷移図(state chart)は仕様書が無く、書いていなかった。のちに、印刷機は状態遷移が複雑だと知った。状態遷移の管理が大事。

事故17 アセンブラのコードを一つ注釈(comment)にしたら高速になった。

VZエディタのPC-9801からN5200という機種に移植をしていた頃。すべてのアセンブラのコードを一行づつ、注釈(comment)にして走らせるという確認作業をしていた。

ある時、ある命令を注釈(comment)にしたら、画面のスクロールが高速になった。改善というよりは事故という表現が適切なような気がする。当時、NECのPC-VANのN5200ユーザネットのシスオペをしていたおかげでか、差分公開しても、NECから機密保持違反で訴えられることはなかった。NECから情報提供を受けていた訳では無く、機密保持契約を結んでいなかったことも幸いしたのかもしれない。

対策17

機密は知らされることなく作業した方が気が楽かも。
機密保護違反にするより、公開して便利になった方が利益が高いことが、企業の判断の基準かもしれない。

2倍や3倍ではなく、5倍か10倍くらい速いのが受けた。同じCPUのハードウェアで価格が倍以上するのだから、画面の速度が10倍速いと顧客満足度は高くなる。機密保持契約を結んでいない人が公開することが、企業にとっても利点だったのだろうと推測している。

  • #事故18 ##対策18 #事故19 ##対策19

その他の事故(事件)

自分が直接経験していない事故(事件)を記録する。

事故を、狭い範囲で把握するのではなく、計算機技術に関連する事象を、事故と並べて検討することにより、事故と事件、戦争と安全について検討できるだろう。

9.11 同時多発テロ アメリカ・航空機

まるで映画の一面を見ているような映像。本当に飛行機が高そうビルに突っ込むなんて。事故というよりは、事件である。
安全対策を検討する上では、同じ土俵に載せることに意味はあるだろう。

3.11 福島原子力発電所事故

福島原子力発電所事故では、直接的な死亡者は短期的にはいない。しかし、多くの人の生活を脅かしたという意味では、現在の新型コロナ感染対策に勝るとも劣らない事故だった。

酸欠事故

働いていた組織で酸欠死亡事故があった。
安全衛生の担当ではなかったので詳細は把握していない。
人事の担当だったので新人教育にどう反映するとよいかは検討した。

感電事故

大学の電気科で、落雷実験装置がある。
自分の年よりだいぶ前らしいが、死亡事故があったと聞いている。
強電系の電力系の研究室に配属になったが、理論の研究室で実際には、研究環境の整備のための通信エミュレータの移植と、FORTRANで連立微分方程式のPade近似による解法の計算プログラムしか組んでいない。

交通死亡事故

職務上ではなく、関係者の交通死亡事故の報告はいくつか拝見したことがある。

アイシン精機の豊頃試験場で、AUTOSAR仕様のソフトウェアの実車試験に参加した時に、試験運転者(test driver)の運転さばきの鋭敏さに、ソフトウェアが一瞬でも遅れれば、命取りになることを直感した。

自動車のソフトウェアは、排ガス規制対応も、安全もどちらも時間が命取りで、OSのOSEK(AUTOSAR Classic Platform OS)も、CAN(controller area network)通信規約も、時間が短く、空間も小さくできることが利点であることがわかった。

自動運転自動車

自動車の自動運転での事故もいろいろ報告があり、対策も多様だ。

広島・長崎

原子力爆弾の破壊力、致死力について、他の事象と同じように検討することは、安全対策の一つの鍵を得るかもしれない。

すべての国で、戦争を事故にならべて分析して、計算機の機能と事故対策を考えるとよい。

ミサイルの弾道計算も、原子力爆弾の設計も、計算機の性能向上の一齣を担っている。量子計算機も、人工知能も、次の戦争の道具になるかもしれないことを考慮した上で、対策を検討するのが技術者の仕事だろう。

インタネット

インタネットが戦争時の経路選択の堅牢性による技術である。主にIEEEによるEthernet、Wi-Fi無線規約と、IETFによるRFCネットワークの規約による。

この規約群で規定していないことは、試験・実験か、事故か、攻撃かに分類できる。

網のよい習慣(netiquette)は、戦場でも有効な習慣でなければ意味がない。

文書履歴(document history)

ver. 0.01 初稿 11項目 20200920 午前
ver. 0.02 2項目追記(13) 20200920 午後
ver. 0.03 その他の事故(事件)追記 20200920 夜
ver. 0.04 4項目追記(17) 20200920 深夜