うぃまの旅日誌

公開

PCの調査報告 【キャッシュミス】【バッファオーバーフロー】


昨日の旅日誌で案内した通り、「"一括ダウンロード"ができない、一部ロードが途中で止まってしまう」件について、私なりの考察をまとめさせていただきました。





⚠️注意喚起⚠️
・PCを利用されている方にとって負担に感じる内容かもしれません…。
・私の憶測を多く含んでいるため、一つの可能性として捉えていただけると幸いです。
・文章中の「キャッシュミス」については、"Android端末の調査報告1"の最後でも触れています。
・Apple製スマホ・タブレット=スマホ 、 Android製スマホ・タブレット=Androidスマホ 、 メインメモリ(RAM)=メモリ といった記載をしています。


【考察】
この不具合が"現在の対応状況"に掲載されたタイミング(2024/03/27)を考えると、お知らせの開発・運営レターに記載されていた"広範な検証や調整"で一時的にデータの読み込みが不安定になっているのかもしれないと思いました。
(私の場合ですが、)最近、一括ダウンロードに必要なデータ量がかなり削減されているのもその影響でしょうか…。

旅日誌を確認したところ、スマホやAndroidスマホでも発生していましたが、主にPCで起きている印象でした。


PCは搭載されているCPUのコア数が、最近では12〜24コアとかなり多いようです。その分、「キャッシュミス」の発生確率が上がり、キャッシュメモリにデータが無いという状況に陥りやすいのではないかと個人的には思いました。
(CPUのコア数に対応するキャッシュメモリの数が間に合っていればいいのですが、色々とキャラスト内で調整を行っている現段階だと不安定になりやすいのかもしれないです。)
※参考にしたサイト
・CPU性能比較表【2024年最新版】
https://pcfreebook.com/article/450856544.html




旅日誌を確認した際に気になったのですが、PC版では0%でロードが止まってしまう現象が起きやすいとのことでした。
・100%で「全てのデータの読み込みが完了した状態」とすると、0%は「データの読み込みが始まっていない状態」だと思います。
・PCのCPUのコア数はかなり多いため、キャッシュミスが発生し、キャッシュメモリにデータが無いという状況に陥りやすいかもしれない、と先程お伝えしました。

つまり、"キャッシュメモリにデータが無いので、データの読み込みが始まらない"といった現象がCPU内部で起きている可能性もあるのではないでしょうか。

その場合、メインメモリ(RAM)からデータを読み込もうとするため、データの処理速度が著しく低下してしまいます。結果として、データの読み込みが始まったとしても、本来より長い時間を掛けて処理が完了すると思いました。
(旅日誌にて、「PC版でログインできない時、数十秒待ち続けているとなぜかログインできる」といったコメントをお見受けしました。もしかすると、上記のような流れが発生していたのかもしれないです。)





………………………………
そして、PCの場合はOSのプログラミング言語として " C♯ "、" C++ "といったC言語から派生したものを主に使用しているそうで、「バッファオーバーフローの脆弱性」という課題を抱えていると思いました。


端的に言うと、
外部のプログラムにデータが上書きされやすく、その度にデータが破損してしまうということです。(それを悪用して外部から不正なプログラムが送られてきてしまうパターンもあるそうです。)


最近の旅日誌の不具合報告で、PCから旅日誌を開こうとすると「この接続ではプライバシーが保護されません」といったエラーメッセージが表示されるというものがありました。
(追記: iPadの方でも同様の報告をお見受けしました。)
現在の対応状況に「一括ダウンロード」ができない不具合が掲載された時期だったので、データの調整中に何かの拍子でバッファオーバーフローが起きていた可能性もありそうです。

また、C言語には「データの処理が高速で、メモリ消費量も少ない」という特徴があります。PCは性能の高さを追求した代償として、データの扱いが非常に困難になっていそうです。
(スマホやAndroidスマホでセキュリティソフトがあまり推奨されておらず、PCで推奨されているのはそういった背景があるのかもしれません。)

※プログラミング言語と使用機器について、分かりやすく表にまとめてくださっているサイトを見つけましたので、ページ下に貼りました。
※参考にしたサイト
・ゲーム開発で使われるプログラミング言語8選!各言語の特徴も解説
https://wonder.litalico.jp/news/column2303-3/

・Web アプリ開発者も他人事じゃない バッファオーバーフロー攻撃の概要と対策
https://yamory.io/blog/about-buffer-overflow/

・C言語とは|特徴やC++やC♯との違いを分かりやすく解説
https://career.levtech.jp/guide/knowhow/article/771/



それと関係があるか分かりませんが、私のApple製タブレットで旅日誌を開くと、たまに画像の読み込みに失敗して「?」マークが表示されます。
調べてみたところ、原因の一つとして「ブラウザにキャッシュが保持されている」と書かれていたので、破損したデータがキャッシュメモリ内に残ってしまっているように感じました。アプリのタスクを切っても直らないため、何かしらの影響でメモリリーク(メモリ内にデータを保持し続けてしまうバグの一種のことです。)のような現象が起きているのかもしれないです。
一応、端末を再起動すると直ります。
※参考にしたサイト
・画像が表示されず、バツ印[×]、クエスチョンマーク[?]が表示されます
https://support.lolipop.jp/hc/ja/articles/360048380434





………………………………
一括ダウンロードができない方の多くは、50%でゲーム内のロードが止まっている印象でした。
・50%は「一部のデータが破損しているため、途中でデータの読み込みが止まっている状態」だと私は思います。

ゲーム内の"広範な検証や調整"の影響でバッファオーバーフローを起こし、メモリ内に破損したデータが残っていたのかもしれません。
旅日誌の報告を確認した際に、端末の再起動では直らなかったそうなので、もしかするとメモリリークが起きていた可能性もあるのではないかと思いました。
また、「別の端末とデータ連携をして元の端末に戻る」と直ったという報告もお見受けしたので、ユーザー情報を移行することで、メモリ内のデータがリセットされているようにも感じました。

C/C++言語とメモリリークの関連性がまとめられているサイトから一部引用しますが、
ユーザー情報の移行=システムの再起動

といった関係があるのかもしれないです。
(※この"システム"というのは、端末の再起動では取り除けない内部データのことを指していると思います。以前の"Android端末の調査報告3"の内容で例えると、常駐プログラムやサーバソフトウェアの類いでしょうか。)
※参考にしたサイト
・一週間で身につくC言語の基本|コラム
http://c-lang.sevendays-study.com/column-28.html


この不具合の対処法とは限りませんが、旅日誌で見受けられたものとして「別のサーバーに変更してから元のサーバーに戻る」、「アプリのアンインストール、インストールを行う」などがありました。
これらもユーザー情報の移行が内部で行われ、メモリ内のデータをリセットしていたのかもしれません。






……○……○……○……○……
【おわりに】
キャラスト内の調整が落ち着くまでは、ダウンロード関連の不具合が起きやすいかもしれないと私は思いました。ただ、広範な検証や調整を行っているとのことだったので、気長に待つのが良さそうな気がします。

これで、私の調査報告は最後になります。ここまでお付き合いいただきありがとうございました。
調査報告に記載した内容は、必要であればご自由にお使いください。不具合改善に繋がるようでしたら是非お役立てください。




(これは私の独り言です。)

今回、不具合に関する調査を行ってみて、膨大な時間と労力が必要になることを痛感いたしました…。日夜、不具合の対応をされている方々には頭が上がらないです。

不具合に対して意見はそれぞれ異なりますが、キャラストが好きな気持ちに変わりはないはずです。批判的な意見が出るのもキャラストへの愛があるからだと思っております。
現在も検証や調整に尽力されているのは、ゲーム内の様子やお知らせの内容を拝見するとよく分かります。落ち着いてじっくり行ってくだされば大丈夫です。

熟練の冒険者様だけでなく、これからイアルに転生される方も楽しめる環境になることを心より願っております。





うぃま

コメント