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

Android 端末で緊急通報番号へ発信した場合に発生する問題、OS のバグと Microsoft Teams のバグの合わせ技だった 26

ストーリー by nagazou
バグバグ 部門より
headless 曰く、

Pixel 3 で緊急通報番号 (911) へ発信したら端末がフリーズし、通報できなかったと Reddit で報告されていたのだが、Google の回答によると Android OS と Microsoft Teams のバグの合わせ技だったようだ (The Register の記事9to5Google の記事BetaNews の記事Windows Central の記事)。

Google によれば、非常に限定的な状況でのみ発生する問題であることが調査の結果判明したという。条件としては、OS が Android 10 以上であること、Microsoft Teams をインストールしたがサインインしていないこと、の両方を満たしたうえで、緊急通報番号へ発信しようとすると発生するそうだ。そのため、Microsoft Teamsでサインインすれば問題は発生しなくなるほか、Microsoft Teams を再インストールすると一時的に問題が解消するとのこと。

問題の根本的な原因は Android OS 側にあるようだが、Microsoft は問題を解決した Microsoft Teams バージョン 1416/1.0.0.2021194504 を 10 日にリリースした。一方の Google は 1 月 4 日の Android プラットフォームアップデートで修正する計画を示している。

  • by Anonymous Coward on 2021年12月13日 21時17分 (#4169194)

    近頃話題になっている「TeamsがAndroid端末の緊急通報をできなくする」

    どうすればよいかの説明はいろいろなところで掲載されていますが、
    何故そうなったのか知らない方も多いのでは?

    アレゲネタといえばスラド! せっかくなので調べてみました。

    ~中略~

    google先生に尋ねてみると、まさにドンピシャな記事が出てきました。

    How a bug in Android and Microsoft Teams could have caused this user’s 911 call to fail [medium.com]

    記事を読むと以下の事がわかります。

    • Androidは緊急通報発信時、どのPhoneAccountで掛けるかを選ぶ処理が走る。そのために全PhoneAccount(緊急通報に適さないものも含む)に対してソート処理を行う
    • PhoneAccountの大小比較は様々な情報をもとに行うが、それらの情報が同値の場合はハッシュ値の比較を行う。本来はInteger.compareToを使うべきだが、`account1.hashCode()-account2.hashCode()`となっていた(ハッシュ値によってはオーバーフローが発生し大小比較が壊れる)
    • Microsoft Teamsは未ログインの場合、アプリが再起動したりコールド起動するたびに異なるPhoneAccountを生成・登録する(PhoneAccountの識別はユーザー名と会社名の組み合わせからなるが、未ログイン時はユーザーIDに乱数UUIDが設定されていた)

    つまり、MicrosoftTeamsがPhoneAccount一覧に似たようなPhoneAccountを多数登録し、
    Androidが緊急通報時にTeamsが登録したPhoneAccountを並び替えできずにエラーとなっているそうです。

    いかがでしたか?
    気に入ったなら是非、返信・モデをお願いします。

    ここに返信
    • by Anonymous Coward

      いかがでしたかブログ風なのに、ちゃんと参考になるのは草
      # M1無いので参考になる

      ハッシュの減算とか、ロジック的に異常なのに、コードレビュー通っちゃったのね。

    • それはそれで問題な気が
      こういうのってアプリのアンインストールでちゃんと消しているんだろか

      • by Anonymous Coward

        ログインしてしまうと問題がなくなるって事は、最初の認証前の仮IDを適宜作成しているのでは?
        それなら実際に接続処理するまで作らなければ問題は無くなる。
        元々は仮IDでシステム関連の通知でもやりとりしてたんでないかな。

        • by Anonymous Coward

          Teamsをダウンロード後すぐにサインインしていたならそうだけど、
          未ログインで放置してたけどログインしたというのが、
          Googleの「If you have the Microsoft Teams app downloaded, check to see if you are signed in. If you have been signed in, ...」に該当するかは微妙な気がする。

          Teamsがインストールされているけどしばらく放置(例えばプレインストールされてたけど気づかなかった)し、
          改めてサインインした場合、仮IDのものが消されるか残ったままになるかは記載は無いし、

          (Google曰く)レアケースである問題のさらにレアケースであろう、未ログイン後しばらく放置してからログインしたケースをGoogleが説明してくれるとは考えにくいと思う。

  • Google Pixel にソフトウェア アップデートが提供されるタイミング - Pixel Phone ヘルプ [google.com]

    以下の Google Pixel への Android バージョン アップデートとセキュリティ アップデートの提供は終了しました。

    • Google Pixel 3、Google Pixel 3 XL
    • Google Pixel 2、Google Pixel 2 XL
    • Google Pixel 1、Google Pixel 1 XL

    The Pixel 3 and 3 XL will get their final sunset update in Q1 2022 [androidpolice.com]
    ということでこの「サンセット」アップデートは 2022 年 1 月 4 日に提供されるのだろうか。

    ここに返信
  • root 特権で動くわけでもあるまいし、いくら Teams が行儀悪いことしていようとも Android の非と見なされるべきだろうに

    ここに返信
    • by Anonymous Coward

      GIGAZINEはテックメディア気取ってるけどコタツで飯食いながら記事書いてるだけだからね
      何も詳しいなんてことはないズブの素人の集まり

      • by Anonymous Coward

        GIGAZINEをスラドに置き換えてもなんの違和感も無い件。

        • by Anonymous Coward

          ここは参考になったりなるほど!なコメがあるけどGIGAZINEは無いしなぁ…

  • by Anonymous Coward on 2021年12月13日 18時59分 (#4169109)

    OSのバグをTeamsが顕在化させただけ
    本来OSのアップデートで対処すべきところを、OSのアップデートなしでもバグを回避するようにTeams側でも修正しただけ

    ここに返信
    • by Anonymous Coward

      とはいえワザワザTeamsみたいなアプリ入れときながらログインしない状態で放置とか…

      ゲスト接続専用?スマホで出来るか分かりませんが。

      • by Anonymous Coward

        プリインストールって知ってる?

  • by Anonymous Coward on 2021年12月14日 3時51分 (#4169282)

    どうやってるんだろう?

    # まずバーに端末を置き忘れます。

    ここに返信
    • by Anonymous Coward

      うまく動くといいな、ってお祈りして終わりじゃね?
      バグ報告があがったら、あちゃー、駄目だったかー、って修正。

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...