Upgrade to Pro — share decks privately, control downloads, hide ads and more …

あの日のHotReloadはなぜ動かなかったのか? 〜OSセキュリティ(W^X)とJITコンパ...

Avatar for Kazuki Chigita Kazuki Chigita
November 12, 2025
470

あの日のHotReloadはなぜ動かなかったのか? 〜OSセキュリティ(W^X)とJITコンパイラの攻防〜

iOS26の発表直後、FlutterのHot reloadが実機では動作しない問題が発生し、アプリ開発者は窮地に立たされまさした。
この問題は現代のOSのセキュリティ制約とJITコンパイラが深く関わっています。この課題にどう向き合い、どう解決していったのかを時系列で振り返りましょう。この解決の過程を振り返ることで、フレームワークへの理解が更に進み、FlutterのコアであるHot reload技術についてより深い知見を得ることができます。
フレームワークやVMのアップデートが、どうやって自分たちの開発体験やアプリの品質に直結するのかを追体験しましょう。

https://fortee.jp/flutterkaigi-2025/proposal/912d7f78-375a-4d57-a1ef-3b5aa438396e
https://2025.flutterkaigi.jp/

資料内のリンク一覧
https://github.com/flutter/flutter/issues/163984
https://gist.github.com/osy/8940e5ae5f24646b808f58d197883ca5
https://github.com/dart-lang/sdk/issues/60202
https://github.com/dart-lang/sdk/tree/main/runtime/vm
https://github.com/apple-oss-distributions/xnu
https://en.wikipedia.org/wiki/W%5EX
https://deepwiki.com/dart-lang/sdk
https://developer.apple.com/documentation/kernel/1585336-vm_remap
https://zenn.dev/tsuruo/articles/48909d22d49ffe
https://support.apple.com/ja-jp/guide/security/sec8b776536b/1/web/1#secd022396fb
https://gist.github.com/JJTech0130/142aee0f7bda9c61a421140d17afbdeb
https://github.com/flutter/flutter/issues/170312
https://infosec.exchange/@jjtech/114067037367821976
https://docs.flutter.dev/resources/faq
https://github.com/chigichan24/FlutterKaigi2025
https://mrale.ph/dartvm/#how-does-dart-vm-run-your-code
https://nxmnpg.lemoda.net/ja/2/mprotect
https://dart-review.googlesource.com/c/sdk/+/433940
https://dart-review.googlesource.com/c/sdk/+/435120
https://dart-review.googlesource.com/c/sdk/+/435780
https://dart-review.googlesource.com/c/sdk/+/435860
https://dart-review.googlesource.com/c/sdk/+/434982
https://dart-review.googlesource.com/c/sdk/+/435562
https://dart-review.googlesource.com/c/sdk/+/435640

Avatar for Kazuki Chigita

Kazuki Chigita

November 12, 2025
Tweet

Transcript

  1. 自己紹介 名前 : Kazuki CHIGITA / @chigichan24 仕事 : 株式会社MIXI

    でソフトウェアエンジニア 好きなDartの言語仕様 : Extension Types FlutterKaigiとの関わり : 昨年登壇しました! 2
  2. アイスブレーク Q. 皆さんのプロジェクトでは、Flutterバージョンをどこまで追従 してますか? - 3.38.0 (stable) - 3.35.x (stable)

    - 3.32.x (stable) 5 ここより下はiOS26かつ実機では ホットリロードが動かない! 今日はそんな話をします!
  3. おしながき - Chapter1. 予兆 - Chapter2. Liquid Glassの盛り上がりの裏で起きていたこと - Chapter3.

    どう解決したのか - HotReloadの仕組み - 解決のコンセプト - Simulator fallback - Dual mapping - Chapter4. 複数のプラットフォームを支えるということ 6
  4. おしながき - Chapter1. 予兆 - Chapter2. Liquid Glassの盛り上がりの裏で起きていたこと - Chapter3.

    どう解決したのか - HotReloadの仕組み - 解決のコンセプト - Simulator fallback - Dual mapping - Chapter4. 複数のプラットフォームを支えるということ 7 今日の目標は何が起きたかを 追体験すること
  5. 予兆 - 2025/02/14: iOS 18.4 beta1 の発表後以下のような Issueがたてられる https://github.com/flutter/flutter/issues/163984, 2025/10/19アクセス

    14 従来JIT modeを動作させるために使っ ていた穴が閉じられる debug modeってなに??
  6. debug modeとは? 16 Kernel IR (.dill) dart2js dart2wasm DartVM (AOT)

    DartVM (JIT) release mode: native ARM/x86-64 librariesへの変換 今日はここは割愛 debug mode: DartVMによって dillが直接実行され、 動的にマシンコードに変換 Backend
  7. debug modeとは? 17 Kernel IR (.dill) dart2js dart2wasm DartVM (AOT)

    DartVM (JIT) release mode: native ARM/x86-64 librariesへの変換 今日はここは割愛 debug mode: DartVMによって dillが直接実行され、 動的にマシンコードに変換 Backend debug mode = 普段の開発で使っているビルド 超ざっくり言えばこれ
  8. 予兆 - 2025/02/25 : 識者が調査後、dart-lang/sdk の方にも大枠の方針と ともに何をするべきかのAction Itemsが作成される - Priorityは

    P1 として設定される - この頃にはすでにどうすれば、この問題を解決するかの アイデアの一つがコミュニティでは提唱されている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス https://infosec.exchange/@jjtech/114067037367821976, 2025/10/19アクセス https://gist.github.com/JJTech0130/142aee0f7bda9c61a421140d17afbdeb, 2025/10/19アクセス 19
  9. 予兆 - 2025/02/25 : 識者が調査後、dart-lang/sdk の方にも大枠の方針と ともに何をするべきかのAction Itemsが作成される - Priorityは

    P1 として設定される - この頃にはすでにどうすれば、この問題を解決するかの アイデアの一つがコミュニティでは提唱されている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス https://infosec.exchange/@jjtech/114067037367821976, 2025/10/19アクセス https://gist.github.com/JJTech0130/142aee0f7bda9c61a421140d17afbdeb, 2025/10/19アクセス 20
  10. 予兆 - 2025/02/25 : 識者が調査後、dart-lang/sdk の方にも大枠の方針と ともに何をするべきかのAction Itemsが作成される - Priorityは

    P1 として設定される - この頃にはすでにどうすれば、この問題を解決するかの アイデアの一つがコミュニティでは提唱されている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス https://infosec.exchange/@jjtech/114067037367821976, 2025/10/19アクセス https://gist.github.com/JJTech0130/142aee0f7bda9c61a421140d17afbdeb, 2025/10/19アクセス 21 iOS 18.4では開発が実質できないので、 アップデートしないように アナウンスする必要がある
  11. 予兆 - 2025/02/25 : 識者が調査後、dart-lang/sdk の方にも大枠の方針と ともに何をするべきかのAction Itemsが作成される - Priorityは

    P1 として設定される - この頃にはすでにどうすれば、この問題を解決するかの アイデアの一つがコミュニティでは提唱されている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス https://infosec.exchange/@jjtech/114067037367821976, 2025/10/19アクセス https://gist.github.com/JJTech0130/142aee0f7bda9c61a421140d17afbdeb, 2025/10/19アクセス 22 iOS 18.4では開発が実質できないので、 アップデートしないように アナウンスする必要がある えっやばいやん 大変だ〜
  12. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 23 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud.
  13. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 24 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud. この変更の影響を受けたプロジェクトが 対応できるように一時的に戻したよ
  14. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 25 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud. 将来のiOSのリリースでは、 またこの制限をかけるよ
  15. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 26 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud. この変更はDebugモードを悪用する怪しい アプリに対抗するために必要だ
  16. 挙動ベースで確かめてみよう! 34 - iOS 18.7.2 と iOS 26.1 を用意する -

    Flutter 3.32.8 で確認する - https://github.com/chigichan24/FlutterKaigi2025 本当にdebug modeは動かないの?
  17. 38

  18. タイムライン 40 2/14 2/25 3/5 6/10 iOS18.4 beta1公開、debug modeが動かなくなる 主にDartVM周りの開発者がどう対応するかの方針を

    立てる iOS 18.4 beta2公開、debug modeが動くようになる iOS 26.0 beta1公開、debug modeが動かなくなる
  19. タイムライン 42 2/14 2/25 3/5 6/10 iOS18.4 beta1公開、debug modeが動かなくなる 主にDartVM周りの開発者がどう対応するかの方針を

    立てる iOS 18.4 beta2公開、debug modeが動くようになる iOS 26.0 beta1公開、debug modeが動かなくなる 直後、Xが割と盛り上がる
  20. タイムライン 43 2/14 2/25 3/5 6/10 iOS18.4 beta1公開、debug modeが動かなくなる 主にDartVM周りの開発者がどう対応するかの方針を

    立てる iOS 18.4 beta2公開、debug modeが動くようになる iOS 26.0 beta1公開、debug modeが動かなくなる 直後、Xが割と盛り上がる これがホントならFlutterを技術選択候補 から外すかも... ベンダーロックじゃないの? Flutterチームは対応できるの? 助けて (切実) これは流石に致命的じゃないかい?
  21. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 44 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud. 再掲
  22. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 45 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud. 将来のiOSのリリースでは、 またこの制限をかけるよ 再掲
  23. 予兆 - 2025/03/05 : AppleがiOS 18.4 Beta2 を発表し、Beta1で 導入されたJIT modeの厳しい制限を撤回した

    - 何もせずに、問題が解決 - 一方、以下のように明言もしている https://github.com/dart-lang/sdk/issues/60202, 2025/10/19アクセス 46 This EXC_BAD_ACCESS was removed from iOS 18.4 to give affected folks time to deal with this, but the behavior will be making a come back in a future iOS release. JIT code actually provided to the process by the debugger is expected to continue to function, while code JIT compiled in the process being debugged will not function. This change was added to iOS as a mitigation against abuse of debug capabilities for App Fraud. 将来のiOSのリリースでは、 またこの制限をかけるよ 再掲 そういえば前から言うてたわ Ω\ζ°)チーン
  24. JIT/HotReloadの仕組み 52 Kernel IR (.dill) DartVM (AOT) DartVM (JIT) release

    mode: native ARM/x86-64 librariesへの変換 debug mode: DartVMによって dillが直接実行され、 動的にマシンコードに変換 Backend
  25. 53 Kernel IR (.dill) DartVM (AOT) DartVM (JIT) release mode:

    native ARM/x86-64 librariesへの変換 debug mode: DartVMによって dillが直接実行され、 動的にマシンコードに変換 Backend JIT/HotReloadの仕組み
  26. JIT/HotReloadの仕組み 55 Kernel IR (.dill) DartVM Flutter Engine host OS

    1. バイナリ形式のIRを DartVMにそのまま渡す。
  27. host OS JIT/HotReloadの仕組み 56 Kernel IR (.dill) DartVM Flutter Engine

    2. Flutter Engineは DartVMのpublic APIを 経由してDartを実行 DartEntry::InvokeFunction()
  28. host OS JIT/HotReloadの仕組み 57 Kernel IR (.dill) DartVM Flutter Engine

    3. DartVMのJIT compilerがhost deviceに 合わせて必要な マシンコードを吐き出す iOSデバイスなら arm64 DartEntry::InvokeFunction()
  29. host OS JIT/HotReloadの仕組み 58 Kernel IR (.dill) DartVM Flutter Engine

    3. DartVMのJIT compilerがhost deviceに 合わせて必要な マシンコードを吐き出す iOSデバイスなら arm64 DartEntry::InvokeFunction()
  30. マシンコードを吐き出すの詳細 60 host OS 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory ここの領域に対応させるぞ ※ POSIXでのmmapと考えて問題ない ですが、実際はもっとリッチです
  31. マシンコードを吐き出すの詳細 61 host OS 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory 実行可能! JITコンパイル結果をもらってきて、 メモリ保護モードを書き込み可能(RW) にして書き込む
  32. マシンコードを吐き出すの詳細 62 host OS 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory (読み込んで)書き込むぞ! メモリ保護モードを実行可能(RX)にし てCPUにメモリ領域のコードを 実行できることを伝える
  33. host OS JIT/HotReloadの仕組み 63 Kernel IR (.dill) DartVM Flutter Engine

    3. DartVMのJIT compilerがhost deviceに 合わせて必要な マシンコードを吐き出す iOSデバイスなら arm64 DartEntry::InvokeFunction()
  34. host OS JIT/HotReloadの仕組み 64 Kernel IR (.dill) DartVM Flutter Engine

    3. DartVMのJIT compilerがhost deviceに 合わせて必要な マシンコードを吐き出す iOSデバイスなら arm64 DartEntry::InvokeFunction() わーいこれでDartコード実行できた!
  35. host OS JIT/HotReloadの仕組み 65 Kernel IR (.dill) DartVM Flutter Engine

    3. DartVMのJIT compilerがhost deviceに 合わせて必要な マシンコードを吐き出す iOSデバイスなら arm64 DartEntry::InvokeFunction() わーいこれでDartコード実行できた! これが大まかなJIT compileの動き
  36. JIT/HotReloadの仕組み 66 Kernel IR (.dill) DartVM Flutter Engine host device

    JITがベースなので、 この仕組みの応用で 考えられる!
  37. JIT/HotReloadの仕組み 68 Kernel IR (.dill) DartVM Flutter Engine host device

    HotReload発生 影響のある関数を無効化 -> スタブに変更
  38. JIT/HotReloadの仕組み 69 Kernel IR (.dill) DartVM Flutter Engine host device

    HotReload発生 差分の Kernel IR (.dill) が生成される
  39. JIT/HotReloadの仕組み 70 Kernel IR (.dill) DartVM Flutter Engine host device

    HotReload発生 差分の Kernel IR (.dill) が生成される あとはJITと一緒の動き
  40. なぜiOS実機でDebugModeが動かなくなった? 78 iOS 26 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory 同一のメモリで 権限をRXからRWに 切り替えることがNGになった
  41. Dual Mapping 84 - 同一のメモリに対して 1. 読み取り、2.書き込み、3.実行を 割り振るべからずにはW^Xという考え方がある。 - メモリは、2.書き込み

    xor 1,3.読み取り実行 といういずれかの ステータスになるべき。 - これまでは mrotect systemcallでこれが実現できていた https://en.wikipedia.org/wiki/W%5EX, 2025/11/13 アクセス
  42. Dual Mapping 85 - 同一のメモリに対して 1. 読み取り、2.書き込み、3.実行を 割り振るべからずにはW^Xという考え方がある。 - メモリは、2.書き込み

    xor 1,3.読み取り実行 といういずれかの ステータスになるべき。 - これまでは mrotect systemcallでこれが実現できていた https://en.wikipedia.org/wiki/W%5EX, 2025/11/13 アクセス Write Read/Execute
  43. Dual Mapping 86 - 同一のメモリに対して 1. 読み取り、2.書き込み、3.実行を 割り振るべからずにはW^Xという考え方がある。 - メモリは、2.書き込み

    xor 1,3.読み取り実行 といういずれかの ステータスになるべき。 - これまでは mrotect systemcallでこれが実現できていた https://en.wikipedia.org/wiki/W%5EX, 2025/11/13 アクセス Write Read/Execute
  44. Dual Mapping 87 - 同一のメモリに対して 1. 読み取り、2.書き込み、3.実行を 割り振るべからずにはW^Xという考え方がある。 - メモリは、2.書き込み

    xor 1,3.読み取り実行 といういずれかの ステータスになるべき。 - これまでは mrotect systemcallでこれが実現できていた https://en.wikipedia.org/wiki/W%5EX, 2025/11/13 アクセス Write Read/Execute mprotectが塞がれたので これと類似の状況を実現する
  45. Dual Mapping 93 iOS 26 DartVM Memory Virtual Memory 読み取り実行

    書き込み vm_remap で実現 https://developer.apple.com/documentation/kernel/1585336-vm_remap
  46. マシンコードを吐き出すの詳細(改) 96 host OS 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory W RX Wを使って書き込み JITコンパイル結果をもらってきて、 Writeにマップしたアドレスを経由して 書き込みを行う
  47. マシンコードを吐き出すの詳細(改) 97 host OS 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory W RX ここの領域にWとRXを対応させるぞ 実行可能(RX)のアドレスを経由して CPUにメモリ領域のコードを 実行できることを伝える
  48. マシンコードを吐き出すの詳細(改) 98 host OS 1. 仮想メモリの確保 2. コードの生成と書き込み 3. 実行メモリへの変換

    DartVM Memory Virtual Memory W RX ここの領域にWとRXを対応させるぞ 実行可能(RX)のアドレスを経由して CPUにメモリ領域のコードを 実行できることを伝える このWとRXのflip操作にvm_remapを使用
  49. 2つのアプローチ参考にしたコミット 99 - Simulator fallback - 434982: [vm] Runtime option

    to not use the simulator for simarm64_arm64. | https://dart-review.googlesource.com/c/sdk/+/434982 - 435562: [vm] Rename USING_SIMULATOR to DART_INCLUDE_SIMULATOR. | https://dart-review.googlesource.com/c/sdk/+/435562 - 435640: [vm] Disable simulator when we detect we can JIT. | https://dart-review.googlesource.com/c/sdk/+/435640 - Dual Mapping - 433940: [vm] Use dual mapping of code pages on certain OS versions | https://dart-review.googlesource.com/c/sdk/+/433940 - 435120: [vm] Rework RX workarounds | https://dart-review.googlesource.com/c/sdk/+/435120 - 435780: [vm] Fix implementation of IsAtLeastIOS<X> | https://dart-review.googlesource.com/c/sdk/+/435780 - 435860: [vm] Fix freelist interaction with dual mapping | https://dart-review.googlesource.com/c/sdk/+/435860
  50. 解決までのタイムライン 104 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける 6/21
  51. 解決までのタイムライン 105 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21
  52. 解決までのタイムライン 106 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る
  53. 解決までのタイムライン 107 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る 修正のための最初のコミット が積まれる
  54. 解決までのタイムライン 108 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る 修正のための最初のコミット が積まれる コミュニティから特定条件で動作 しないフィードバックが来る
  55. 解決までのタイムライン 109 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る 修正のための最初のコミット が積まれる フィードバックをもとに、 修正のコミットが積まれる コミュニティから特定条件で動作 しないフィードバックが来る
  56. 解決までのタイムライン 110 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る 修正のための最初のコミット が積まれる フィードバックをもとに、 修正のコミットが積まれる コミュニティから特定条件で動作 しないフィードバックが来る masterで修正が完了
  57. 解決までのタイムライン 111 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る 修正のための最初のコミット が積まれる フィードバックをもとに、 修正のコミットが積まれる コミュニティから特定条件で動作 しないフィードバックが来る masterで修正が完了 Flutter 3.35 stableリリース
  58. 解決までのタイムライン 112 2/14 2/25 3/5 6/10 6/13 6/19 6/20 8/16

    iOS 18.4 b1/debug mode動かなくなる 開発者が根本原因の発見・ 解決策の方向性をみつける iOS 18.4 b2/debug mode動くようになる 6/21 iOS 26の発表、問題が再発す る 修正のための最初のコミット が積まれる フィードバックをもとに、 修正のコミットが積まれる コミュニティから特定条件で動作 しないフィードバックが来る masterで修正が完了 Flutter 3.35 stableリリース iOS26発表からでは わずか11日で解決!
  59. 複数のプラットフォームを支えるということ - Kernel IRやDartVMのレイヤーでplatform差分を吸収している - 今回の問題以外にも様々対応してきている。 - Appleが今後もKernelを変えてくる可能性はある。 それに対応する方式もすでに検討中のよう (fast

    modular AOT compilation with an interpretation fallback) 116 各種OS向けの バイナリフォーマット FuchsiaOSでの VMEXリソースの初期化 macOSでの スレッド割り込み処理 他にも様々...
  60. おしながき - Chapter1. 予兆 - Chapter2. Liquid Glassの盛り上がりの裏で起きていたこと - Chapter3.

    どう解決したのか - HotReloadの仕組み - 解決のコンセプト - Simulator fallback - Dual mapping - Chapter4. 複数のプラットフォームを支えるということ 117 今日の目標は何が起きたかを 追体験すること
  61. おしながき - Chapter1. 予兆 - Chapter2. Liquid Glassの盛り上がりの裏で起きていたこと - Chapter3.

    どう解決したのか - HotReloadの仕組み - 解決のコンセプト - Simulator fallback - Dual mapping - Chapter4. 複数のプラットフォームを支えるということ 118 追体験できた?
  62. おしながき - Chapter1. 予兆 - Chapter2. Liquid Glassの盛り上がりの裏で起きていたこと - Chapter3.

    どう解決したのか - HotReloadの仕組み - 解決のコンセプト - Simulator fallback - Dual mapping - Chapter4. 複数のプラットフォームを支えるということ 119 追体験できた? JITの仕組みの裏側 セキュリティ要件 問題の突然の発覚 修正までの速度感 メモリ管理 原因の追求 将来への拡張 数多のフィードバック 突然の問題解消
  63. ライセンス - だしゅまる©2024 by FlutterKaigi 本作品は [CC BY-NC-ND 4.0 国際ライセン

    ス](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ja) に基づいています。 121
  64. 参考資料(1) - https://github.com/flutter/flutter/issues/163984 - https://gist.github.com/osy/8940e5ae5f24646b808f58d197883ca5 - https://github.com/dart-lang/sdk/issues/60202 - https://github.com/dart-lang/sdk/tree/main/runtime/vm -

    https://github.com/apple-oss-distributions/xnu - https://en.wikipedia.org/wiki/W%5EX - https://deepwiki.com/dart-lang/sdk - https://developer.apple.com/documentation/kernel/1585336-vm_remap - https://zenn.dev/tsuruo/articles/48909d22d49ffe - https://support.apple.com/ja-jp/guide/security/sec8b776536b/1/web/1#secd022396fb - https://gist.github.com/JJTech0130/142aee0f7bda9c61a421140d17afbdeb - https://github.com/flutter/flutter/issues/170312 - https://infosec.exchange/@jjtech/114067037367821976 - https://docs.flutter.dev/resources/faq 122
  65. 参考資料(2) - https://github.com/chigichan24/FlutterKaigi2025 - https://mrale.ph/dartvm/#how-does-dart-vm-run-your-code - https://nxmnpg.lemoda.net/ja/2/mprotect - https://dart-review.googlesource.com/c/sdk/+/433940 -

    https://dart-review.googlesource.com/c/sdk/+/435120 - https://dart-review.googlesource.com/c/sdk/+/435780 - https://dart-review.googlesource.com/c/sdk/+/435860 - https://dart-review.googlesource.com/c/sdk/+/434982 - https://dart-review.googlesource.com/c/sdk/+/435562 - https://dart-review.googlesource.com/c/sdk/+/435640 123