Release Notes — v0.6.4¶
rtkrcv Stability Fixes + Community Profile¶
Release date: 2026-04-16 Type: Patch — rtkrcv crash fixes + GitHub Community Profile completion Branch: release/v0.6.4
Overview¶
v0.6.4 is a patch release dominated by rtkrcv stability fixes. It ships three independently root-caused crashes that affected the mrtk run (rtkrcv) status path, plus the repository-hygiene work that completes MRTKLIB's GitHub Community Profile (issue/PR templates, declarative labels, CONTRIBUTING, SECURITY, and Code of Conduct).
No positioning-engine behavior changes. No new public APIs. The 62-test CTest suite passes unchanged.
rtkrcv stability fixes (user-facing)¶
Fix — status-poll SIGSEGV from out-of-bounds mode[] read (#74)¶
prstatus() had an 8-entry mode[] array but newer positioning modes (PMODE_PPP_RTK=9, PMODE_VRS_RTK=12, …) had been added since, so the second status poll in any PPP-RTK / VRS-RTK session read past the array end and crashed on the invalid pointer. Mode table is now 13 entries covering PPP-fixed, PPP-RTK, SSR2OSR, SSR2OSR-fixed, and VRS-RTK, with bounds checks on both mode[] and freq[].
Commit: 5daa212
Fix — status-poll data race on shared state vectors (#74)¶
prstatus() shallow-copied rtk_t under the server lock, leaving the x / P / xa / Pa pointers aliased to heap buffers that the processing thread kept mutating via rtkpos(). The race window was ~50–200 ms/epoch in PPP-RTK mode and surfaced as intermittent SIGSEGVs during long runs.
Fix: extract the values the status path actually needs (position + covariance diagonal) into local variables while the lock is held, then null out the shared pointers after unlock so the status path cannot chase them. A SIGSEGV backtrace handler plus -rdynamic on Linux was added to make any future crashes easier to post-mortem.
Commit: 1656081
Fix — async-signal-safe SIGSEGV handler that preserves core dumps (#82, #85)¶
The new crash handler originally called fprintf() (not async-signal-safe) and _exit() (which suppresses core dumps). It now uses write(2) for diagnostics, reinstalls the default signal handler, and re-raises the signal so OS core-dump capture still fires. Review rounds on #85 tightened the handler further.
Commits: e352c24, 4dd6b62, 6e507d0
Repository hygiene — GitHub Community Profile¶
v0.6.4 also lands the intake-surface work that activates MRTKLIB's GitHub Community Profile. These changes do not affect the compiled artifact.
- Issue and PR templates (#88) — five issue templates (
bug_report,positioning_issue,feature_request,documentation,question), a PR template withctestslot and positioning-regression check, and.github/ISSUE_TEMPLATE/config.ymlpointing at the docs site. - Declarative labels + sync workflow (#90) —
.github/labels.ymlis now the single source of truth for the 34-label scheme (type / module / mode / gnss / priority / status).EndBug/label-syncruns on push tomainwhenlabels.ymlchanges. - Policy documents (#92) —
CONTRIBUTING.md(issue reporting, fork + upstream workflow, coding standards, positioning-regression guard),SECURITY.md(Private Vulnerability Reporting; scope also explicitly covers Code of Conduct reports), andCODE_OF_CONDUCT.md(Contributor Covenant 2.1 verbatim).
Additional: README now links the CLAS real-time Grafana dashboard for users monitoring mrtk run telemetry.
Files Changed¶
| File | Change |
|---|---|
apps/rtkrcv/rtkrcv.c | Status-path data-race fix, bounds-checked mode table, async-signal-safe SIGSEGV handler |
CMakeLists.txt | Version 0.6.3 → 0.6.4; -rdynamic on Linux for crash backtraces |
CONTRIBUTING.md | New — contributor on-ramp |
SECURITY.md | New — vulnerability disclosure policy |
CODE_OF_CONDUCT.md | New — Contributor Covenant 2.1 |
.github/ISSUE_TEMPLATE/* | New — five issue templates + config.yml |
.github/PULL_REQUEST_TEMPLATE.md | New — PR template |
.github/labels.yml | New — declarative label source of truth |
.github/workflows/label-sync.yaml | New — label-sync automation |
README.md | CLAS real-time Grafana dashboard link; v0.6.4 roadmap entry |
CHANGELOG.md | v0.6.4 entry |
mkdocs.yml | v0.6.4 in Releases navigation |
Upgrade notes¶
- rtkrcv users on v0.6.3 or earlier — upgrading is recommended. The mode-table out-of-bounds fix (#5daa212) affects anyone running
mrtk runin PPP-RTK or VRS-RTK mode and polling status. - No configuration, TOML schema, or API changes. Existing
rtkrcv.toml/rnx2rtkpinvocations run unchanged.
Test Results¶
62/62 tests pass (no regressions).