-
Notifications
You must be signed in to change notification settings - Fork 0
Game Session Manager Safety Design
TZ edited this page Aug 26, 2026
·
1 revision
Desain pengaman suspend/resume proses Game Session Manager BoneFish, berdasarkan audit kode Bloxstrap/GameSession/.
Game Session Manager men-suspend proses yang mengganggu performa game (via aturan GameSessionRule) dan me-restore-nya setelah game ditutup. Karena suspend thread adalah operasi berisiko, seluruh desain berprinsip fail-safe: gagal → tidak menyentuh.
Sebelum sesi dimulai, SecuritySoftwareDetector memeriksa software keamanan (antivirus/EDR):
-
Ok— aman, fitur otomatis aktif penuh. -
Unavailable— deteksi tidak tersedia; fitur dibatasi. -
Degraded— software keamanan terdeteksi; auto-select nonaktif (mengubah thread proses AV bisa memicu deteksi).
Auto-select aplikasi "aman" hanya berjalan saat state Ok.
ProcessClassifier menolak suspend untuk:
-
Proses Windows service (SCM) — semua PID dari WMI
Win32_Serviceotomatis CRITICAL (audio stack, driver companion, sync service — termasuk per-user service sepertiOneDrive.Sync.Service,GameInputRedistService). -
Proses audio vendor —
RAVBg64,RAVCpl64,RtkNGUI64,RtkAudioService*,Nahimic*, dll. (lihat Troubleshooting Audio). - Proses sendiri & koordinator — tidak pernah men-suspend dirinya sendiri.
- Proses CRITICAL bawaan — daftar proses sistem vital.
ProcessSuspensionService.SuspendProcess:
- MaxSweepPasses = 5 — maksimal 5 pass sweep thread baru.
- SweepTimeoutPerProcess = 2 detik — batas waktu per proses; lewat batas → berhenti.
-
Pelaporan jujur —
PartiallySuspendeddilaporkan bila ada thread gagal/tertinggal. - Thread yang sudah tersuspend tetap dilaporkan walau enumerasi gagal di tengah jalan → bisa di-restore.
RestoreProcess memastikan PID yang di-restore adalah proses yang sama yang di-suspend:
- Bandingkan
StartTimeUtc±1 detik — bila PID sekarang milik proses lain (IdentityMismatch), resume dibatalkan (mencegah resume thread proses yang tidak kita suspend). - Verifikasi pasca-resume (2 percobaan × 100 ms): probe
IsThreadSuspendedper thread; bila masih tersuspend → resume ulang. - Thread yang hilang karena proses shutdown normal tidak dianggap failure.
-
active.jsonditulis sebelum mutasi pertama — interrupt di tengah suspend tetap meninggalkan catatan recovery. - Stale recovery guard (v7.2.6) — sesi stale dari handoff tidak salah me-restore sesi baru.
- Rescue scan — jaring pengaman manual (tombol tray/page): pindai SEMUA proses untuk thread tersuspend dan resume. Hanya atas inisiatif user (probe per-thread memakan waktu).
- Escape hatch restore — tombol tray untuk restore penuh.
- Tray watcher selalu aktif (v7.2.7) — pantau game eksternal (suspend/restore otomatis), notifikasi suspend via tray balloon.
- Jangan pernah men-suspend: service SCM, proses audio vendor, proses security software.
- Tambahan ke CRITICAL list wajib lewat audit: proses apa, kenapa vital, bukti kasus.
- Setiap perubahan suspend/resume harus lolos verifikasi identitas & verifikasi pasca-resume.