Commit 74d82b4
committed
fix: stop SIGTRAP converting Int32 local-stats counters to UInt32 for Live Activity
Local-stats telemetry counters (numPacketsRx/Tx, numTotalNodes, etc.) are
firmware uint32 values stored into Int32 entity fields via
Int32(truncatingIfNeeded:), so any value above Int32.max is stored as a
negative Int32. The Live Activity (MeshActivityStatus) build then read them
back with the trapping UInt32(_:) initializer, which crashes on a negative
value ('Negative value is not representable in type UInt32') — a SIGTRAP in
telemetryPacket at MeshPackets.swift:1032 on the MeshPackets actor. A
long-running node whose packet counters exceed Int32.max crash-loops on
every local-stats packet (2.7.13 App Store issue 212e3554).
Use UInt32(bitPattern:), the exact inverse of the Int32(truncatingIfNeeded:)
storage, to round-trip the original firmware value. Fix all three sites that
build MeshActivityStatus: MeshPackets (live update), Connect, and CarPlay
(initial state).1 parent f2910e0 commit 74d82b4
3 files changed
Lines changed: 27 additions & 27 deletions
File tree
- Meshtastic
- CarPlay
- Helpers
- Views/Connect
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
731 | 731 | | |
732 | 732 | | |
733 | 733 | | |
734 | | - | |
| 734 | + | |
735 | 735 | | |
736 | 736 | | |
737 | | - | |
738 | | - | |
739 | | - | |
740 | | - | |
741 | | - | |
742 | | - | |
743 | | - | |
744 | | - | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
745 | 745 | | |
746 | 746 | | |
747 | 747 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1025 | 1025 | | |
1026 | 1026 | | |
1027 | 1027 | | |
1028 | | - | |
| 1028 | + | |
1029 | 1029 | | |
1030 | 1030 | | |
1031 | | - | |
1032 | | - | |
1033 | | - | |
1034 | | - | |
1035 | | - | |
1036 | | - | |
1037 | | - | |
1038 | | - | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
1039 | 1039 | | |
1040 | 1040 | | |
1041 | 1041 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
518 | 518 | | |
519 | 519 | | |
520 | 520 | | |
521 | | - | |
| 521 | + | |
522 | 522 | | |
523 | 523 | | |
524 | | - | |
525 | | - | |
526 | | - | |
527 | | - | |
528 | | - | |
529 | | - | |
530 | | - | |
531 | | - | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
532 | 532 | | |
533 | 533 | | |
534 | 534 | | |
| |||
0 commit comments