trop[bot]
94bc0ec88c
fix: prevent use-after-free in PowerMonitor via dangling OS callbacks ( #50087 )
...
PowerMonitor registered OS-level callbacks (HWND UserData and
WTS/suspend notifications on Windows, shutdown handler and lock-screen
observer on macOS) but never cleaned them up in its destructor. The JS
layer also only held the native object in a closure-local variable,
allowing GC to reclaim it while those registrations still referenced
freed memory.
Retain the native PowerMonitor at module level in power-monitor.ts so
it cannot be garbage-collected. Add DestroyPlatformSpecificMonitors()
to properly tear down OS registrations on destruction: on Windows,
unregister WTS and suspend notifications, clear GWLP_USERDATA, and
destroy the HWND; on macOS, remove the emitter from the global
MacLockMonitor and reset the Browser shutdown handler.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com >
2026-03-05 15:24:12 -05:00
..
2025-10-03 14:10:29 -05:00
2025-10-05 12:32:28 -05:00
2023-08-04 10:47:29 +02:00
2026-02-18 13:23:53 -05:00
2026-02-18 13:23:53 -05:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2025-04-23 17:55:18 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2025-10-14 15:58:27 +02:00
2025-10-14 15:58:27 +02:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2025-07-21 16:34:38 +02:00
2024-07-25 11:25:45 +02:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2024-09-10 16:05:57 -07:00
2026-02-20 14:30:11 -05:00
2025-08-05 02:03:06 +09:00
2025-09-13 08:19:07 +09:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2025-07-21 16:34:38 +02:00
2021-11-22 16:34:31 +09:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2026-03-04 16:43:44 +01:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2025-09-24 19:42:22 -05:00
2026-02-26 16:55:19 -05:00
2025-11-05 11:00:51 -08:00
2025-03-28 11:50:07 -07:00
2026-03-02 12:50:39 +01:00
2026-03-02 12:50:39 +01:00
2026-02-05 13:09:20 -08:00
2026-02-02 14:21:40 +01:00
2023-08-23 09:54:21 -04:00
2025-10-13 12:21:54 -04:00
2025-09-08 12:57:15 +02:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2026-03-05 11:29:27 +01:00
2026-03-05 11:29:27 +01:00
2026-03-05 15:24:12 -05:00
2026-03-05 15:24:12 -05:00
2026-03-05 15:24:12 -05:00
2026-03-05 15:24:12 -05:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2025-07-21 16:34:38 +02:00
2026-01-26 11:58:09 +01:00
2025-09-22 20:16:27 -07:00
2026-02-17 16:19:16 -05:00
2025-08-05 02:03:06 +09:00
2026-02-17 16:19:16 -05:00
2025-07-21 16:34:38 +02:00
2025-09-22 20:16:27 -07:00
2025-08-04 23:28:01 +09:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2025-11-07 10:13:45 -05:00
2025-09-10 11:16:35 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2025-10-21 14:26:30 -04:00
2026-02-17 16:19:16 -05:00
2025-08-07 19:25:50 +02:00
2025-08-07 19:25:50 +02:00
2026-02-17 16:19:16 -05:00
2026-02-11 13:52:14 -08:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2024-09-25 06:19:39 -05:00
2025-04-23 20:33:50 -05:00
2026-03-03 14:15:36 -05:00
2026-02-24 17:18:21 -05:00
2026-03-05 17:14:13 +01:00
2026-03-05 17:14:13 +01:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2026-02-17 16:19:16 -05:00
2025-11-12 12:53:00 -06:00
2025-10-23 16:28:51 -04:00
2025-09-08 12:57:15 +02:00
2025-09-22 20:16:27 -07:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2026-02-17 16:19:16 -05:00
2025-08-27 09:30:50 +09:00
2025-08-05 02:03:06 +09:00
2025-08-05 02:03:06 +09:00
2024-09-17 01:38:56 -07:00
2022-02-09 18:58:52 -08:00
2024-07-25 11:25:45 +02:00
2024-07-29 12:42:57 -05:00
2022-06-29 12:55:47 -07:00
2022-06-29 12:55:47 -07:00