カテゴリー
技術

DockerとRazer Synapse 3、全く関係のない2つのアプリケーションの一方しか起動できないバグの秘密

Docker for Windows を動かしていると Razer Synapse 3 が起動しなくなり、Razer Synapse 3 を動かしていると Docker for Windows を起動できない、という現象が発生していたそうです。

Docker for Windows は Docker社公式の Windows Pro 用 Docker環境、Razer Synapse 3 はRazer 社のゲーミングマウスの設定ツールです。接点の無さそうなこの二つのアプリがなぜ?

この不思議な現象の原因を見つけた@Foone さんのツイートがこちら。

Docker for Windows も、Razer Synapse 3 ツールも、それぞれが同時に一つしか「自分の」プロセスが動かないように制御していました。自分の GUID を名前としたグローバルな Mutex を作ることで、2つ目の起動がされないようにするというものです。

しかし、二つのアプリケーションの両方ともが、自アプリのGUIDではなく、.NET (の一部)のアセンブリ情報を参照してしまっていました。そのため、二つのアプリケーションは同じ名前の Mutex を参照することとなり、一方が起動中にはもう一方が起動できなくなっていたのです。

@Foone さんはさらに、StackOverflow の回答が原因なのではないかと推理を続けます。

「.NET 2.0 でGUIDを取得する方法は?」という質問に対して回答され、質問者によって「ベストアンサー」に選ばれた2009年の回答のコード


string.Format("Global\{0}", (object) Assembly.GetExecutingAssembly().GetType().GUID);

これが、「自プロセスのGUIDを取得するつもりで.NET(の一部)のGUIDを取得する」処理だったのです。

質問の12分後に書かれたこの回答、ベストアンサーとされてから1年以上そのまま信じられ、回答が間違っているという指摘をする人も現れているのですが、ベストアンサーとして受け入れられている回答を消すことは仕組み上できず、どこからか気づいた元回答者が戻ってきて間違った回答の内容を編集するまで3年間、さらにそこにベストアンサーとして載り続けていたということ。

この間に、二つのアプリケーションの開発者が、重複起動をさせないための方法を検索し、このベストアンサーを見つけて、実装したのではないか、と。

偶然同じ間違った結果に別のアプローチから達した可能性もゼロではないでしょうけど、まあ上の推測が合ってそうな気がします。

Docker for Windows が修正されたのは2018年5月ということ。Razer の方は、今回の@Foone さんのツイートがバズったためバグについて知ることとなった CEO が、修正を約束したようです。

もしかしたら、第3、第4の同時に起動できないWindows アプリケーションも存在するのかもしれません。

たしかにテストするのが面倒そうな処理ではありますが、質問サイトの回答をコピペして良しとすることの問題が現れた事例ですね。

via Hacker News

カテゴリー
技術

BugBug – 機械学習によるバグの自動トリアージ by Mozilla/Firefox

Mozilla Hacks で、2月から導入された BugBug というバグレポートの自動分類ツールの紹介が読めます。

Mozilla の様々な製品/コンポーネントに対して発行されたバグ報告を、とりあえずどの製品のどのコンポーネントに属するものかを分類して、そのコンポーネントの担当者に早く届くようにする、というのか今回のツール導入の目的だそうです。

大災害時などに負傷者の治療作業の順番をつける「トリアージ」と同様のことをバグに対して行う「バグトリアージ」というわけ。

“Teaching machines to triage Firefox bugs” より、概念図

これまではというと、ボランティアや開発者が人手でバグを分類し設定することで担当者に届けられていたのですが、ここの分類に日数が掛かっていて、バグが解消されるまでの期間が長くなっていた、と。

機械学習で分類させるには、どんなバグレポートがどのコンポーネントに対するものか、という過去の正しいデータが必要ですが、Mozilla でこれまで発行されたバグレポートは20年以上の期間での153万件を越えるそう。

これが人力でおおむね正しく分類されているので、これをXGBoostに食わせることで、新たに到着したバグレポートが属するコンポーネントの予測が自動的にできるのだそうです。

2月末に一部のプロダクトに対して導入運用を始め、350件のバグを自動分類し、そのチケットの解決までの日数の(外れ値を除いた)中央値は2日間と改善されたそう。ちなみに、今は60%の信頼度で分類して、80%以上の適合率を達成しているそうです。

今後の計画としては、重複チケットの検出、バグレポートに欠けている内容(たとえばバグの再現方法)を見つけて報告者に追加してもらう、リリース版での重要なバグを素早く発見する、などを検討しているということ。

大きな製品になるとバグレポートも膨大に届き、切り分けだけでたいへんな人的リソースを必要とするのでしょうけれど、その部分の自動化は開発側にも利用者側にも大きな恩恵を与えそうですね。

via VentureBeat

カテゴリー
fun

フェイスブックで「女性の友達の写真」は出るのに「男性の友達の写真」は出ない

友達の検索ではなく一般の検索の方ですが、検索ボックスで「女性の友だちの写真」(Photos of my female friends)と入力するとつながっている女性の友人のアップロードした写真が出てくるのに、

「男性の友だちの写真」(Photos of my male friends)と打っても男性の友人の写真は出てきません。

代わりに、何らかの検索した結果の写真が表示されました。

ベルギーの Facebook ウォッチャー、Inti De Ceukelaire さんがツイッターで紹介したこの謎現象

TheNextWeb も書いてますが、Facebook が今の形になる以前の大昔(2004年)、まだ名前が Facemash だったころ、ハーバード大の女子学生の顔に点数をつけるサービスだった、という過去を思い出させるバグです。さすがに今わざとやったわけではないでしょうけど。

… たぶん。

via TheNextWeb