タグ

バグに関するrryuのブックマーク (49)

  • [Ruby]うるう日の午前0時から9時までに起動したプロセスでのみ再現するサーバー障害

    原因調査 エラーの発生箇所の特定 このエラーIncorrect datetime valueはデータベースのdatetime columnに対して不正な値を書き込もうとしたことが原因で発生しています。通常のINSERT statementを使って、過去の時刻を書き込むことはほとんどありませんが、MySQLなどに用意されているINSERT … ON DUPLICATE KEY UPDATE statementを使って複数の行を更新するときには、過去の時間を使ったクエリが生成されます。 例えば、複数の消耗品を所持しており、1つのクエリで複数の所持数を変更するときは、下記のようになります。 // PK(user_id, item_id) SELECT * FROM items WHERE user_id = 123; user_id | item_id | quantity | created_

    [Ruby]うるう日の午前0時から9時までに起動したプロセスでのみ再現するサーバー障害
    rryu
    rryu 2024/03/11
    なぜ0時から9時まで限定なのかはgmtime_with_leapsecondのバグがUTCにすると日付が前日に戻るときに発生するかららしい。その時に常に閏年扱いになってしまうので日付が狂う。
  • 大規模な移行バグを修正するための戦術 - Qiita

    こう見たとき、"FileNotFound"のバグが一番多い。と分かりました。そうすると、"FileNotFound"のバグを修正すると、多くの移行エラーが解消され、効率よく移行が進むと考えられます。しかし、現実問題として、それほど直りませんでした。 "簡単なバグ"とは何か? 前節では、バグの発生頻度が高いものから修正していくとアプローチをしていきましたが、実際問題それほどうまくいきませんでした。端的に、なぜ失敗したか。というと、"バグが直らなかった"からです。仮に"FileNotFound"のバグを直そうとしたとき、2,520個あるログファイルから、ランダムに1つとりだし、どの部分でエラーになっているのかを細かく見ていきます。それで、バグの原因を特定し、直す。という極シンプルなアプローチをするわけですが、「このバグの原因を特定する」ということが、そもそも難しかった。ということです。先にも書

    大規模な移行バグを修正するための戦術 - Qiita
    rryu
    rryu 2023/09/05
    データ移行プログラムのバグを直した話。多かれ少なかれ想定外のデータが存在するので、そういうのを検出できるように作っておかないとこの話のようになるという。当時の上長への恨みがすごい。
  • Linuxの起動を29万2612回も繰り返して1000回に1回発生するバグを見つけることに成功

    Red Hat Linuxの開発者であるリチャード・M・W・ジョーンズ氏が、Linux v6.4の起動時にハングアップするバグがあることに気づき、Linuxを29万2612回も再起動するテストを行ったそうです。 I booted Linux 292,612 times | Richard WM Jones https://rwmj.wordpress.com/2023/06/14/i-booted-linux-292612-times/ Dev Boots Linux 292,612 Times to Find Intel, AMD Kernel Bug | Tom's Hardware https://www.tomshardware.com/news/dev-boots-linux-292612-times-for-1-in-1000-kernel-bug ジョーンズ氏が起動時のハング

    Linuxの起動を29万2612回も繰り返して1000回に1回発生するバグを見つけることに成功
    rryu
    rryu 2023/06/20
    git bisectでコミットを戻しつつひたすら起動を繰り返して原因となったコミットを探し出したらしい。すごい執念だ…
  • Deno のめっちゃ難しいバグを修正した - Qiita

    2022年4月、Deno に以下のバグが報告されました。 fetch API を使って 300KB ぐらいあるファイルをアップロードすると、一定確率でアップロードされたファイルが壊れるというバグの報告です。 報告者によれば、1.20.6 まではバグは発生しておらず、1.21.0 から発生するようになったという事です。1.20.6 の次のリリースが 1.21.0 なので、パッチバージョン1個分まで、バグの発生時期が特定されている状態です。 fetch 周りは自分はほぼ実装していないので「担当範囲ではない」感覚だったので、普通にスルーしていました。 自分に限らず、Deno Land コアチームの誰もこの issue にピンと来る人が居なかったようで、stale ボット (数ヶ月進捗の無い issue を自動的にクローズしようとするボット) に2回もクローズされかけていました。Deno の st

    Deno のめっちゃ難しいバグを修正した - Qiita
    rryu
    rryu 2022/10/05
    要は共有バッファを返すタイプのスレッドアンセーフなのだが、yieldだと同期的に使ってくれそうというイメージがあるからなのかメソッドを見ただけではなかなか理解できない。
  • 遅れてやってきた令和バグ あるいはiOSアプリでの日付の扱い方 - Hatena Developer Blog

    こんばんは、id:kouki_dan です。突然ですが、現在は2021年ですね。あるいは令和3年です。今年が有効期限の免許証には平成33年と書かれているかもしれません。また、神武天皇即位の年を元年と定めた皇紀では2681年になります。 同じ年を表しているはずなのですが、暦によって何年なのかは違います。実はiOSは複数の暦に対応していて、日で使われている和暦にも対応しています*1。令和元年5月にリリースされたiOS 12.3のリリースノートには、令和に対応したことが示されています。 暦を選択するのはiOSを使っているユーザーなので、iOSアプリでは端末によって複数の暦が存在しています。この記事では暦の取り扱いが不適切で実際に起きたバグとその原因、また、一般的にどのように日付を扱うべきかについて説明します。 突然、APIレスポンスのパースに失敗する 原因判明! APIのレスポンスが閏日だった

    遅れてやってきた令和バグ あるいはiOSアプリでの日付の扱い方 - Hatena Developer Blog
    rryu
    rryu 2021/09/21
    根本的には有効期限の解釈が誤っていたという不具合なのだが、これは問題になっていなかったのだろうか。
  • 先日の電竜戦、長時間マッチで現れたやねうら王のバグについて | やねうら王 公式サイト

    二日前に電竜戦 dlshogiと水匠の長時間マッチが開催された。 最高峰将棋AIによる長時間対局、プロ棋士3名が解説 : https://yaneuraou.yaneu.com/2021/08/03/long-time-game-by-the-best-shogi-ai/ イベント的には大成功で、多くのニュースメディアでも取り上げていただいたようである。 水匠のバグについて さて、その1局目で水匠がバグと思わしき読み筋が現れた。成れないところに飛車を成るというものだ。水匠の読みの錯覚であり、それによって大きく形勢を損ねて敗北を喫した。 水匠 vs dlshogi、先手番をともに制す(コンピュータ将棋協会blog) : http://blog.computer-shogi.org/denryu-sen_channel_opening-matches_and_conference/ 水匠の探索

    rryu
    rryu 2021/08/18
    元々特定の状況なら許容できる処理として記述されたものが特定の状況を満たさなくなった時に起こる挙動というのは不可解なものが多い印象。
  • x86版Linuxカーネル、無条件にRAMの先頭1MBを予約することに | スラド Linux

    x86版(AMD64含む)のLinuxで、無条件にRAMの先頭1MBを予約することになったようだ(Phoronixの記事、 LKLMアーカイブ)。 既にx86版のLinuxではSandy Brdigeの統合グラフィックスのバグ対策として該当環境では先頭1MBを予約する仕組みになっているが、最近Ryzen環境でLinux 5.13 RCが起動しないという報告があり、予約サイズの違いによるものだと判明している。そのため、細かく対応するよりも無条件に先頭1MB全体を予約する方がシンプルだ。 これに対しLinus Torvalds氏はしぶしぶプルリクエストを受け付けた。Torvalds氏は1MBが使えなくなってもGB単位でRAMを搭載する現在のPCに影響はなく、自身も気にしないとしつつ、小規模な構成をしたい人はx86をあきらめるしかないのか、レガシーDMAリソースを消費することになるなどと述べ、「

    rryu
    rryu 2021/06/10
    BIOSの不具合避けにCONFIG_X86_RESERVE_LOWがあるが、このサイズを上げていくとリアルモードトランポリン用のメモリが確保できなくなって死ぬので、もうそれ用にしか使わないようにしたということらしい。
  • 奇妙な曜日バグ | Wantedly Engineer Blog

    ある日、海外チームからバグの報告がありました。日付と曜日が対応していないというのです。 テスト環境でいくつか設定を変更して試したところ、OSのタイムゾーンをシンガポール標準時 (UTC+8) に変更したときに、曜日が2つずれることが確認できました。4/2は金曜日ですが、4/2が水曜日として表示されてしまっています。 原因調査この部分のソースコードはだいたい以下のようになっていました。Moment.jsというライブラリを使って日付と曜日を表示しています。 // TimelineItem.jsx // date は 2021-04-02 のような文字列 const DateBox = ({ date, showMonth }) => { const mDate = moment(date); const dateHuman = showMonth ? mDate.format("M.D") :

    奇妙な曜日バグ | Wantedly Engineer Blog
    rryu
    rryu 2021/04/06
    メソッドの引数で機能をオーバーライドしていて使い方が不明瞭なライブラリとドキュメントを読まない実装者の相乗効果という感じ。ライブラリ側が % 7 するお節介をしていなければもっと明確に動かなかった。
  • 『マリオカートWii』では“32768周逆走”すると、2ラップでゴールできるようになる。研究家が奇妙なバグ挙動を報告 - AUTOMATON

    10年以上前のゲームでありながらもいまだにTASなどの研究が非常に盛んである『マリオカートWii』において、また新たなバグ挙動の研究成果が発表されている。今回の内容は作のラップカウントシステムの仕様の穴を突くものとなっている。その手段とは、32768周逆走である。これによって、来ゴールには3ラップする必要があるが2ラップになったり、「LAP 8/3」といったありえない表示がゲーム内で実現してしまうほか、2フレームというとんでもなく短いラップタイムが実機でも実現してしまう可能性があった。TASユーザーのMalleo氏が解説動画を投稿しており、稿では主に動画内で解説されている内容に触れる。 今回『マリオカートWii』のラップカウントシステムが研究の対象となったのは、プレイヤーのラップ記録に使われているメモリが、現実的な範囲でアンダーフローを起こせる仕様であったことに起因する。オーバーフロ

    『マリオカートWii』では“32768周逆走”すると、2ラップでゴールできるようになる。研究家が奇妙なバグ挙動を報告 - AUTOMATON
    rryu
    rryu 2021/01/20
    異常な状態を回避するために即ゴールする処理を利用して最速ラップを出せると思ったら走行時間が8時間20分を超える異常な状態に対応する処理に阻まれるという話。
  • 【現場猫案件】ガスト、「ご飯少な目(20円引き)」を何回も実行すると10円になってしまうバグが報告される

    marusyun @marusyun 友達だった鳥乞が教えてくれたんだが、ガストでねぎとろ丼を頼んで、一度ご飯少なめにすると20円引かれるらしくて、何度も少なめにすると最終的に10円になるらしい。 pic.twitter.com/EwlzeMFzg2 2020-10-06 14:25:02

    【現場猫案件】ガスト、「ご飯少な目(20円引き)」を何回も実行すると10円になってしまうバグが報告される
    rryu
    rryu 2020/10/08
    金額がマイナスにならないのはちゃんと作られている感があるが、なぜ数量に対応してしまったのか。
  • SJIS-macに変換したはずなのにSJIS-winになる - Qiita

    $utf8Str = "❶❷❸❹❺"; $sjisStr = mb_convert_encoding($utf8Str, 'SJIS-mac'); echo(mb_detect_encoding($sjisStr, ['UTF-8','SJIS-mac', 'SJIS-win', 'SJIS'])); // SJIS-win ← SJIS-macに変換したはずなのに、何故かSJIS-winと判定されてしまいます。 そもそもSJIS-macってなんだよって話ですが、単にMacJapaneseのエイリアスです。 従ってMacJapaneseと書いても同じく、正しく誤判定されます。 そしてコメント欄にThis is a bug in PHP's mbstring extension『mbstringエクステンションのバグじゃよ』という人が現れています。 間違ったコードを書いたときに自分のせいでは

    SJIS-macに変換したはずなのにSJIS-winになる - Qiita
    rryu
    rryu 2020/09/29
    文字列によってはそうなると思ったら、丸付き数字の文字コードはSJIS-winとSJIS-macで異なるのになぜかSJISでもなくSJIS-winと判定されるというバグなのか。
  • AMD搭載PCで特定のゲームを遊ぶとキャラが真っ黒になるバグが発覚、有志による修正パッチが配布中

    PCで遊べるゲームは日々進化しており、より高性能なCPUGPUを搭載したハードウェアを選べばゲームプレイもより快適になります。しかし、いざ高性能なPCゲームを遊んでみたところ、思わぬバグに遭遇してしまったゲーム開発者のエイドリアン氏が、バグの原因と修正パッチを自身のブログで公開しています。 Fixing Mass Effect black blobs on modern AMD CPUs | Silent’s Blog https://cookieplmonster.github.io/2020/07/19/silentpatch-mass-effect/ 宇宙のあらゆる生命を守る使命を背負い人類代表としてエイリアンと戦うTPSゲーム「Mass Effect」は緻密でリアルな宇宙文明が特徴的なゲームで、2008年にWindows版が発売されました。エイドリアン氏によれば、AMD FX

    AMD搭載PCで特定のゲームを遊ぶとキャラが真っ黒になるバグが発覚、有志による修正パッチが配布中
    rryu
    rryu 2020/07/25
    AMDのプロセッサは3DNow!が使えるはずと思っている昔のゲームなのか。それでも一応動くのがすごい。
  • 【悲報】高輪ゲートウェイ、文字数がモバイルSuicaアプリの想定を超えていて定期券が買えない!「どうして誰もテストしなかったんですか!」

    Yuki@SixTONESとMrs推し @TamaMaruyama やっぱりモバイルは文字が入らない。 フツーの非接触🆔のSuicaの印字、みてみたくなる。ますます。 今、会社、PASMOなんだよなー。 twitter.com/shao1555/statu… 2020-03-19 23:05:56

    【悲報】高輪ゲートウェイ、文字数がモバイルSuicaアプリの想定を超えていて定期券が買えない!「どうして誰もテストしなかったんですか!」
    rryu
    rryu 2020/03/22
    検索キーワードの上限なんてなんでもいいのだが、その値の根拠を求められると適当な値にはできなくなるので現状の最長の駅名にするみたいになったのだと思う。
  • 電波調整、ヨシ! - Qiita

    はじめに この記事は10年以上前の新卒時のやらかしを当時の記憶を思い出しながら書いているため、用語や整合性のズレ、肝心のやらかしが複数要因のどれだったか不透明なためにそれぞれの対処法を書いているなどの問題があります。 また、現場特有かもしれない開発フロー・やらかし内容を書くにあたって特定の可能性があるため、当時の関係者に配慮するための事情説明により乱筆乱文となっている事をご了承ください。 背景 10年以上前にとあるソフトウェア会社の組込み部署に新卒で入社し、携帯電話(ガラケー)開発の現場にN人の中の一人として出向していた時の話です。 新卒で現場出向する事例はあまり無いのですが、学生時代にC++とD言語でコードばっか書いてた時の作品をスキルチェックの為に見せたり、研修でのWindowsアプリやH8マイコン課題の結果から、新卒でも大丈夫だろうとの事で出向と相成りました。 現場は、そこで携帯のハ

    電波調整、ヨシ! - Qiita
    rryu
    rryu 2019/12/24
    コピーする領域が重なっているとコピーする前にコピー本を上書きしてしまうので壊れるあれか…
  • Chrome 78がクラッシュする - Qiita

    Google Chrome 78へのアップデート後にクラッシュして何も見れない現象が発生しているようです(2019/10/23 朝~)。エンジン自体が起動していないためか、設定画面含めてほぼすべて開けなくなります。また、再インストールしても最新バージョンがインストールされるため解消されません。 ※現象がハッキリしてきたので対応方法を更新しました(19/10/24 19:00) 検証環境 Windows 10 Pro Chrome 78.0.3904.70 Endpoint Protection 12.1 RU6 MP7 ※PCMaticでも不具合報告有 対応方法 バグでは無く互換性の問題のようなので下記のいずれかが正しい対処のようです。 Symantec Endpoint Protectionをアンインストールもしくは、v14.2以降にバージョンアップする PcMaticをアンインストール

    Chrome 78がクラッシュする - Qiita
    rryu
    rryu 2019/10/26
    こういう別のアプリケーションが原因のクラッシュはつらい…
  • Big Sky :: 1つの横着から隠しファイルが生まれた瞬間

    この文章は Rob Pike 氏が Google+ に投稿した内容の意訳です。現在は web archive からしか閲覧できません。面白かったので訳してみました。 ショートカットからのレッスン ずっと昔の話。Unixファイルシステムで移動を簡単にする為に . や .. を追加する設計がほぼ完成していた頃。確かではないけれどバージョン2への書き換え中、つまりファイルシステムが階層的になった頃(初期の段階では構造が全く違っていた)に . と .. は入った。ls をタイプするとドット付きのファイルが現れたので、Ken か Dennis のどちらかが簡単なテストプログラムを追加しました。当時はアセンブラでしたが問題のコードは次のようなものと同等でした。 if (name[0] == '.') continue; この1文は、来あるべき以下の1文よりも多少短かった。 if (strcmp(na

    Big Sky :: 1つの横着から隠しファイルが生まれた瞬間
    rryu
    rryu 2019/04/19
    あの隠しファイルの謎仕様はバグ由来だったのか。
  • なんでもかんでも「バグ」ってひとくくりにしないで - Qiita

    はじめに プログラマがソフトウェアを作るとユーザがつきます。ユーザがそのソフトウェアを使っていて何らかの問題が発生すると「このソフトはバグってる、直して!」と言われることがままあります。それに対して「いや、仕様だから」と突っぱねられることがあります。その後お互いの意見が「バグだ!」「いいや仕様だ!」と平行線になってお互いモヤモヤのまま終わるというのはよくある話です。 なぜこういうことが起きるかというと、原因の一つは「問題」イコール「バグ」という短絡的な考え方です。とくにソフトウェアを作ったり使ったりした経験が浅い人がこうなる傾向があると推測しています。このようない違いは「要件」「仕様」と「実装」という言葉の意味を理解していればある程度解決できます。書はこれらの用語について実例を挙げて簡単に紹介します。 注意点 記事では要件や仕様を定義することが前提となっていますが、とくにユーザと開発

    なんでもかんでも「バグ」ってひとくくりにしないで - Qiita
    rryu
    rryu 2019/02/25
    実は負の値の扱いがややこしくて事実上作り直しになるということをクライアントが理解してくれないパターンだ。
  • PostgreSQLは20年間どのようにfsyncを間違って使っていたか - 聴講メモ -

    TL;DR 聴講メモ Intro into durability PostgreSQLのCHECKPIONT CHECKPOINT中にエラーが発生したら? fsyncへの2つの間違った期待 なぜ今になって問題が明らかになってきた? そもそもなぜBufferd I/Oなのか? どうやって直すかか 参考リンク 質疑 最後に 先日PostgreSQLの新しいマイナーバージョンがリリースされました。このマイナーリリースでメインとなる修正は「fsync周りのバグ修正」で、このバグは間違ったfsyncに対する間違った認識から約20年間存在してたバグということで注目されていました。 このバグについてPostgreSQLのコミッタ(Tomas Vondra氏)が解説しているセッションが、先々週開催されたFOSDEM 2019でありました。私もFOSDEM 2019に参加していたのですがその際は裏セッション

    rryu
    rryu 2019/02/18
    fsyncの失敗はリトライできると思ってた?残念!未定義でした!ということらしい。
  • 改元絡みでWindows 10の電卓アプリがバグってました (1/2)

    Windows 10の電卓アプリは日数の計算機能があるが 改元が挟まると表示がおかしくなる? どうも30年に1回くらいしか発見する機会がないバグを見つけてしまったのかもしれない。 Windows 10付属の電卓アプリには、「日数の計算」という機能があるが、Windowsのカレンダー表示を和暦にして、改元の日を挟んで日数計算すると特定条件下で日付計算を間違う。 最初に筆者は、新元号のテストで発見したのだが、実は新しい元号とは関係なく、昭和と平成の切り替わりタイミングでも同じように計算を間違っていた。和暦にして改元を挟んでテストしないと見つけられないバグなのである。 平成になったのは1989年のことが、このときのWindowsは2.1(ただし日語版は平成になってから発売)で、Windows 10の付属ソフトウェアとして登場した電卓プログラムは当然存在していなかった。和暦表示が可能なWindo

    改元絡みでWindows 10の電卓アプリがバグってました (1/2)
    rryu
    rryu 2019/02/10
    1年は分かるけど3週と3日が解せない。
  • Windows 10 October Updateでファイルが消失する原因が判明 - PC Watch

    Windows 10 October Updateでファイルが消失する原因が判明 - PC Watch
    rryu
    rryu 2018/10/10
    ちょっとした親切が地獄を見せるやつだ…