パスワードを忘れた? アカウント作成
16666605 story
バグ

Linuxの起動を29万2612回も繰り返し、1000回に1回発生するバグの原因を特定 109

ストーリー by nagazou
地獄 部門より
Red Hat Linux開発者のリチャード・M・W・ジョーンズ氏は、Linux v6.4の起動時にハングアップするバグを発見し、原因特定のため29万2612回もLinuxを再起動して検証を実施したそうだ。彼はバグの原因を特定するためにさまざまな試行を実施したが、その結果、1000回に1回の割合で起動時にハングアップが生じることが判明したという(WM JonesGIGAZINE)。

調査の結果、起動時の問題を引き起こしていたのは、カーネルコンソールにタイムスタンプを表示する「printk time」の変更だったとしている。同氏によるとLinux v6.0とv6.4-rc6を比較することで、ブート時のハングアップの原因を絞り込むことができたと述べている。なお、この起動バグはAMD製CPUよりもIntel製CPUのマシン環境のほうが発生頻度が低かったとしている。

あるAnonymous Coward 曰く、

再現しにくいバグや、再現はするものの原因を特定するのが困難なバグを調べたことがあれば、話せる範囲で語ってもらえませんか?

どのように再現させたか、どういう風に原因を特定したのか、またはバグの解決に付随するトンデモエピソードがあれば、ぜひとも聞いてみたい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • うん、知ってる、知ってる。
    最近流行りのタイムループとかマルチバースってヤツでしょ?

    • by Anonymous Coward

      ヤンマガの「何度繰り返しても本能寺が燃えるんじゃが」でも
      信長が上杉攻めを80万回だか繰り返したばかりだな

  • by Anonymous Coward on 2023年06月22日 18時19分 (#4482423)

    組込やってると、たまに起動失敗するなんて日常茶飯事だから、自動で電源オンオフできるコンセントは常備してるよね。
    0.1%の割合で失敗するならかなり高確率だ。週末回しておけばかなりの回数のログが取れるから、追跡も楽なほう。

    • by Anonymous Coward on 2023年06月22日 20時40分 (#4482530)

      とある組込プロセッサ・ボードで起動時にソフトウェア・ループによる時間待ちを使ったプログラムを書いたところ、時間待ちのところでLEDをパカパカ点滅させたら初期化に失敗するというトラブルに遭遇したことがある
      やたらLEDの駆動電流が大きい回路定数になっていて、LED点滅によって発生した電源ラインのノイズが悪さをしていたらしい(LEDパカパカを止めたら直った)
      #秋月のキットでLEDの駆動電流がやたら大きいのは眩しくってかなわんので、もっと電流制限抵抗を大きくして欲しい

      親コメント
    • by Anonymous Coward on 2023年06月22日 19時58分 (#4482499)

      メモリの初期化忘れとかリセット回路etcのタイミングマージン辺りとか
      # 展示会に間に合わないから起動時マニュアルリセット一回やってください
      # なんて小細工をしたことがあるのはナイショ

      親コメント
  • 殿堂入りネタ (スコア:3, 参考になる)

    by Anonymous Coward on 2023年06月22日 18時45分 (#4482444)

    オカルトにだって頼っちゃうよ! (スコア:3, おもしろおかしい)
    by textoyx (29735)on 2006年02月09日 17時10分 (#880549) ホームページ 日記

    バグの発見方法
    * ソースリストプリントアウト
    * 髪の毛にクリップを結びつける
    * 1ページずつ髪の毛の先にぶら下げたクリップをかざす
    * 反応したページを抽出
    * 一行ずつクリップをかざす
    * 反応した行に注目

    ええ、もちろん最終手段ですよ。もう、なにがなんだかワカラン!いっそ殺してくれ!オレを殺してくれ!ってなマトモじゃない精神状態ですよ。一回だけですよ!もうしませんよ!許してください…。
    でも解決したよ(笑)

    • by Anonymous Coward on 2023年06月22日 19時30分 (#4482479)

      髪がない人はどうすればいいですか? (´・ω・`)

      親コメント
      • by Anonymous Coward

        髪がない人はどうすればいいですか? (´・ω・`)

        新井智慧「髪はタヒんだ」

    • by Anonymous Coward

      そのために髪を一本抜いたのか、生えたままの貴重な髪の先にクリップつけて頭をソースリストに近づけたのか

    • by Anonymous Coward

      最初から「バグ退散」シールを貼っておけばそんなことしなくても良かったのに

    • by Anonymous Coward

      参考になりました
      バグの原因がわからない時は
      試してみますってこと?

  • by Anonymous Coward on 2023年06月22日 18時33分 (#4482435)

    同じく linux カーネルで 5000台のサーバで、1週間に1回くらいのペースで起こるバグを調査したことあるけど、すごい大変だった。

    • by Anonymous Coward

      おれだったら宇宙線のせいにするかそういうもんだと諦めて運用でカバーする方法を探る

      • by Anonymous Coward

        何の徴候もなく死んでくれれば、ハード故障とか宇宙線とかのせいにもできたんだけどねー。
        毎回場所が違うけど、どれも明らかにカーネルのバグっぽい死亡メッセージ出してから死ぬ。
        当然ながらディストリビュータは「再現できない」で終わり。
        運用スタッフでは対応できないので、詳しいやつ呼び出せってなって、深夜や休日でも週1のペースで呼び出される。
        めんどうなやつ。

        • by Anonymous Coward

          むかーし昔、Linuxをインストールしたサーバを製造している場所で仕事をしていましたが、
          保守契約があるお客様からそういう話があったら、dump がどこそこに出てるので提供してください。
          bug があったので修正版カーネルを提供いたします。って個別にビルドして提供してたけど、最近は品質下がったのかなぁ

    • by Anonymous Coward

      自分も諦めそうなバグだなあ。
      解決したような感じなのでどうやって糸口を見つけたのか聞いてみたい。

      • by Anonymous Coward on 2023年06月23日 12時08分 (#4482939)

        1. 発生か所はバラついてるんだけど、発生か所や運用状況に基いて関係しそうなところ全部にログ出力や情報追加などを仕込んだ特殊カーネルを準備して全台を入れ換えて発生を待つ (ライブマイグレーションでタスクを一時的に別のサーバに逃がしてその間に再起動)
        2. 発生したら、その時出力された情報を元にさらに場所を絞り込んで、カーネルを修正して入れ換えという地味な作業を繰り返す
        3. 原因っぽいものが特定できたら、対策(したつもりの)カーネルを準備して半分だけ入れ換えて発生頻度を見る
        4. 次に対策した半分を元に戻し、対策してなかった半分を対策したものに入れ換えて発生頻度を見る (ハードや実行タスクの影響の可能性を排除するため)
        5. 対策版と未対策版に発生頻度に違いがあれば原因に近い何かであることが確定

        (この時のはロックのレース・コンディションだった。ロックの場所じゃなくて、ずっと先のリソースのアクセス中でこけるので特定がやっかいなやつ。それも似たようなのが2個所あって、1か所の対策では頻度が減るだけで直らなかった)

        親コメント
  • by Anonymous Coward on 2023年06月22日 19時29分 (#4482478)

    毎朝8時半~9時前後頃に、UNEXPECTED STORE EXCEPTIONでBSoDになる現象が発生中で
    一体何が悪さをしているのかを特定してみたくて、格闘中。

    UNEXPECTED STORE EXCEPTIONという事は、おそらくSSDの劣化が原因だとは思う。
    サーマルスロットリング機能のついてない安物で、熱でやられっぱなしだったし。
    もう新しいSSDも用意してある。
    でもなぜ毎朝繰り返し発生するのか、なぜ昼や夕方や夜は何も起こらないのかを特定したくて
    あえてこのまま運用中。
    この時にどんなタスクが走っているのか、新しいSSDにした時は何に気を付けてやろうかと
    知見を貯めたくて。

    • by Anonymous Coward on 2023年06月22日 19時31分 (#4482481)

      自分だったら温度計ひっ付けてログ取るけどなぁ。
      あとは別なマシンにつけてみるとか。
      切り分け大事。

      親コメント
    • by Anonymous Coward

      起動時間から何時間で死ぬかをチェック。
      SSDのファームウェアのバグで電源投入から一定時間経過で死亡は稀にある。

      近隣の工場の始業に伴う電源電圧の低下がトリガーの可能性とかもあるのでUPSの電源電圧ログを確認。

      SATAなら電波も疑うかな。

    • by Anonymous Coward

      コンセントの電圧を調べてみては?

    • by Anonymous Coward

      Windowsが原因とは考えてないの?
      奇妙な不具合はOSのインストールし直しで治る場合がある。

    • by Anonymous Coward

      起動時にアンチウイルスがフルスキャンしてて、熱で死亡って事?

  • by Anonymous Coward on 2023年06月22日 22時01分 (#4482580)

    旅客機の整備やってると、
    各座席の機内エンタメのモニターが毎日電源入れた時に起動失敗、
    飛行中に宇宙線含め何らかの原因でハングアップ、
    到着後に次の便の設定に切り替える時に失敗などなど
    1機で300~400席近いモニターが50機とか、再起動で治るようなソフトエラーがあたかも頻発してるような件数で起きるから本当に困る

    #再起動して駄目なら予備品と入れ替えてメーカー送りだから特に原因は気にしない

    • by Anonymous Coward

      それ、一斉起動による電圧低下が原因じゃないかな。
      新品のうちはある程度の電圧低下に対応できるけど、電圧低下環境でのコンデンサー劣化が進行しまくって起動不能ってパターンじゃないかな。

  • https://qiita.com/rana_kualu/items/c40fe2fb25a043a5dd12 [qiita.com]

    Apache2.4.26より前のauth_digest_moduleにあるバグのせいで、稀にApacheが落ちる。
    稀っていうかこれまで一回しか遭ったことないけど。
    原因まで調べた日本人は私しかいないと思われる。

  • by Anonymous Coward on 2023年06月22日 18時21分 (#4482426)

    メモリー不良ですかね
    散々ぱら調べて特定できずにまさか、、、とメモテスかけたら真っ赤かでorzみたいな

  • by Anonymous Coward on 2023年06月22日 19時00分 (#4482456)

    printk timeのリグレッション(デグレ)とはあるけど。
    デグレの内容が欠落してるのは和田となのかねぇ

    • by Anonymous Coward on 2023年06月22日 20時08分 (#4482510)

      printk("これを入れるとなぜか動く") を取り除いたのが原因。
       
      マジレスすると、ひとつ前のcommitに戻すと動くけど、理由はわからんとのこと。
      https://lkml.org/lkml/2023/6/13/733 [lkml.org]

      親コメント
      • by Anonymous Coward on 2023年06月22日 20時41分 (#4482532)

        tick カウンタ関係で、jiffies を初期化する時に TICK_NSEC の整数倍に調整してなかったから、と読んだけど。
        なんでレアケースなのかまでは判らんかった。

        親コメント
        • by Anonymous Coward

          割り込み関係の待ち合わせ的な何かなんですかね。
          別クロックで駆動している何かの割り込みとかだと
          決定論的に動かないから厄介ですよね。

          # クロックが逆相になっててマージン不足で時々こけるってのは
          # あった。ブートロムのバグで後でエラッタが出た。

          • by Anonymous Coward on 2023年06月22日 21時16分 (#4482555)

            雑に言うと
            ・カーネル起動後しばらくはタイマ関連はピリオディック・モードで動いている
            ・このモードでは定期的にイベントが呼び出されるのだけど
            ・何が作業した時に、次のイベントまでの残り時間が短か過ぎると
            ・経過時間を差し引くと残り時間がマイナスになって、永久に戻って来なくなる
            ・起動後しばらく経つとワン・ショットモードに移行するので、この問題は起きなくなる

            親コメント
            • by Anonymous Coward

              にゃるほど。ベアメタルだと起動時のCPUリソースは安定してるので出にくそうではあるね。

    • by Anonymous Coward

      スラドは、技術系サイトではないからね。

  • by Anonymous Coward on 2023年06月22日 19時33分 (#4482483)

    1000回に1回も失敗するなら、クラウド業者や、大量サーバ運用者は、かなりの頻度でぶつかるのでは?

  • by Anonymous Coward on 2023年06月22日 20時04分 (#4482504)

    社内でRPAソフトのライセンスが余ってたので使わせてもらって、ひたすら試験をやらせた。

    RPAソフトのメモリリークと、セキュリティソフトのメモリリークが観測できた。
    問題の事象は数万回のテストで2回か3回しか再現せず、「発生はするけど原因わかんね」で終わった。

    # 前者は修正され、後者は絶賛放置中

  • by Anonymous Coward on 2023年06月22日 20時17分 (#4482518)

    カウンタが一巡して起動から一定期間後にハングする不具合
    カウンタがもうすぐ一巡するぐらいから始めて、いい感じで特定操作を行って再現確認
    とかしてたなぁ……

    • by Anonymous Coward

      カウンタあふれは大抵鬼門ですね。
      WindowsNTや2000や7を497日以上連続稼動したときや
      Windows95や10を49.7日以上連続稼動したときに問題が出てました。

      • by Anonymous Coward

        あれ?弊社のルータのカードが1400日くらいでハングするバグがあってメーカは対処しないことにしたんじゃなかったかな。そろそろ前回のハングアップから同じくらい経っていそう。明日出社したら確認してみるかな。shut→no shutで済むんだったかなーとかドキュメント探しから始めないと……

  • by Anonymous Coward on 2023年06月22日 20時23分 (#4482522)

    一度遭遇してから次に遭遇するのが1000回後のブート失敗なんて、さっき何か悪い事したかなぐらいでスルーしちゃうな。
    そう動くにはそう動く原因があるのは確かだけどさ…

    # 今使ってるPCは今まで何回ブートしただろう

  • by Anonymous Coward on 2023年06月22日 20時30分 (#4482524)

    ガラケー時代に某社の端末がアプリ実行中に二百数十回通信を行うと以降通信を行わなくなる現象に遭遇。

  • by Anonymous Coward on 2023年06月22日 20時30分 (#4482525)

    クラッシュダンプを取得できるので、再現性はそこまで悪くないから相応しくないかも。
    ここの人ならよく遭遇してる事例として、テストして問題ないとしてリリースしたはずなのに現場でクラッシュ。

    原因は、
    ダンブ取得して逆アセンブルを追っかけたらコンパイラのバグが原因で稀に死ぬ。
    CPUのエラッタで稀に死ぬ。
    アンチウイルスが原因ハンドルやメモリや通信内容が稀に破壊される。
    稀なおま環で、HDDの不良セクターが原因でAPIコールに失敗して止まる。
    メモリ不良(宇宙線の可能性あり)で死ぬ。

  • by Anonymous Coward on 2023年06月22日 20時52分 (#4482536)

    カーネルクラッシュしたメモリダンプを調べてみたところ意図しないメモリが破壊されてクラッシュがおきていたが、誰がメモリを壊していたのかわからず悩みまくった。結局は別の人が手掛けていたディスクドライバが原因で脱力。

  • by Anonymous Coward on 2023年06月22日 22時01分 (#4482581)

    過去に自分が担当していた所でのバグが発生したと言われ、現場での緊急対応が必要だからと特殊な開発環境を大きな段ボール箱につめ二人がかりで運び半日かけて移動したことがあります。先行調査していた人たちと深夜近くに合流して伝えられたのは原因はハードウェア臭いというオチ。

  • by Anonymous Coward on 2023年06月22日 22時28分 (#4482593)

    数年前、なんかPCの動作が重いなぁと思ってパフォーマンスモニターで調べたら、ほぼアイドリング状態なのに割り込みが10万回/秒もあって驚いたことがあった。再起動してみると数千回/秒に戻るんだけど、その後もたまに割り込み頻度が増えたりしていたので、何がきっかけで割り込みが増えるのかを調べたことがあった。

    調べた結果、CPU直経由のUSBに取り付けた外付け光学ドライブの電源スイッチを入れた時に発生することが分かった(チップセット経由のUSBでは起こらなかった。)のだけれども、たどり着くのにちょっと苦労した。

    パフォーマンスモニターのデータコレクターセットとタスクスケジューラ、PowerShellスクリプトを組み合わせて、割り込み頻度が閾値を超えたらトースト通知するような仕組みを作って様子見してた。(データコレクタセットの使い方とかPowerShellスクリプトでWindowsのAPIを使う方法とか色々と勉強になった。)

    何週間か経過して、あまり使わなくなっていた光学ドライブの電源スイッチを入れた後、視線をディスプレイに戻すと通知が出ていて、思わず「出たー!」と声を出してしまったw。

    Windows Performance Analyzerとやらを使って調べてみたが、ACPI.sysが割り込みを発生させていることが分かったくらい。プラグアンドプレイ周りのデバイスの検知や電源状態遷移に問題があったのかな?

    その後、光学ドライブはチップセット経由のUSBの方に接続してやり過ごしたけれど、元々CPUの調子が悪くて(月一くらいでBSoDしてた)、1年と何か月かでCPUを新しいのに換えた。(使ってたのはSEGV問題とかあった初代Zen。たまたま某タイムセールで見付けたZen+世代にしたら安寧を得られた。)

  • by Anonymous Coward on 2023年06月22日 23時10分 (#4482617)

    29万回もやる根気があれば、どんなゲームでも目当てのアイテムを手に入れられる?

typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...