Jonathan Bennett and Claude Opus 5
21ded4e7ed
Make the frame-end anchor atomic
...
The radio worker writes lastFrameEndMs from onNotify() while a draw for a
packet being queued reads it on whatever thread called send(), so the access
was an unsynchronized read of a plain uint32_t. std::atomic with relaxed
ordering is free on every target here and matches MeshService's fromNum.
Relaxed is the right ordering: the anchor publishes nothing but itself, both
writers are the radio worker so the compare-then-store races with no other
write, and losing the race against a reader only anchors that one draw to the
frame before last.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MkrqYBzhAxyybmoezb1TJV
2026-10-09 16:46:57 +00:00
..
2026-08-20 12:28:57 +00:00
2026-10-09 11:40:29 -05:00
2026-09-25 20:15:53 +00:00
2026-10-06 18:31:48 +00:00
2026-10-06 12:05:12 +00:00
2026-09-24 22:41:37 +00:00
2026-07-06 14:51:41 -05:00
2026-10-09 16:46:57 +00:00
2026-10-09 16:46:56 +00:00
2026-09-24 22:41:37 +00:00
2026-10-06 14:30:19 +00:00
2026-08-12 18:15:18 -05:00
2026-10-09 16:46:19 +00:00
2026-09-12 10:54:50 +00:00
2026-09-12 10:54:50 +00:00
2026-08-10 01:02:19 +00:00
2026-01-29 05:56:19 -06:00
2026-09-17 09:36:41 +00:00
2026-09-17 09:36:41 +00:00
2026-08-10 01:02:19 +00:00
2026-08-28 23:30:27 +00:00
2026-01-04 05:15:53 -06:00
2026-01-04 05:15:53 -06:00
2026-02-19 07:16:33 -06:00
2026-01-04 05:15:53 -06:00
2026-09-29 11:13:51 +00:00
2026-05-11 11:46:13 -05:00
2026-10-05 15:14:10 +00:00
2026-07-11 08:24:35 -05:00
2026-01-04 05:15:53 -06:00
2023-06-08 08:07:32 -05:00
2026-09-15 07:16:33 +00:00
2026-09-15 07:16:33 +00:00
2026-09-15 07:16:33 +00:00
2026-01-04 05:15:53 -06:00
2026-01-04 05:15:53 -06:00
2026-08-12 00:05:51 +00:00
2026-10-09 12:01:07 +00:00
2026-10-01 21:20:09 +00:00
2026-07-01 19:01:27 -05:00
2026-09-03 08:52:55 +00:00
2026-09-03 08:52:55 +00:00
2026-09-17 09:36:41 +00:00
2026-09-29 16:11:52 +00:00
2026-08-13 13:15:21 -04:00
2026-08-13 13:15:21 -04:00
2026-01-04 05:15:53 -06:00
2026-01-04 05:15:53 -06:00
2023-01-21 21:23:24 +01:00
2026-09-08 18:25:04 -04:00
2026-08-28 23:30:27 +00:00
2026-10-02 17:54:37 +00:00
2026-09-11 16:43:28 +00:00
2026-09-24 22:41:37 +00:00
2026-01-04 05:15:53 -06:00
2026-08-12 16:49:17 -05:00
2026-01-04 05:15:53 -06:00
2026-01-04 05:15:53 -06:00
2026-07-16 18:57:50 -05:00
2026-10-05 17:05:46 +00:00
2026-08-01 16:23:30 +00:00
2026-06-03 18:05:03 -04:00
2026-08-24 08:23:23 +00:00
2026-01-04 05:15:53 -06:00
2026-10-06 16:23:52 +00:00
2026-10-06 16:23:52 +00:00
2026-10-06 21:14:40 +00:00
2026-07-08 07:30:46 -05:00
2026-01-04 05:15:53 -06:00
2020-08-28 17:38:23 -07:00
2026-01-04 05:15:53 -06:00
2026-07-13 16:28:25 -05:00
2026-08-12 16:49:17 -05:00
2026-09-14 12:19:02 +00:00
2026-09-22 11:10:53 +00:00
2026-08-26 16:17:28 +00:00
2026-08-26 16:17:28 +00:00
2026-09-09 13:28:52 +00:00
2026-09-09 13:28:52 +00:00