Skip to content

Bump to 0.27.1: what the review round found - #192

Merged
Timdebruijn merged 1 commit into
mainfrom
chore/bump-0-27-1
Aug 10, 2026
Merged

Bump to 0.27.1: what the review round found#192
Timdebruijn merged 1 commit into
mainfrom
chore/bump-0-27-1

Conversation

@Timdebruijn

Copy link
Copy Markdown
Owner

Two commits since v0.27.0, both fixes. No new capability, so a patch.

One live bug

g_coredump was read and written across three tasks with no lock. The erase action clears it from
the AsyncTCP task while bridgeInfo() copies its std::string and backtrace from loop(),
rs485Task and AsyncTCP itself — roughly four times a second. That is a use-after-free waiting
for two cores to line up, not a stale read.

Two dormant traps, closed rather than documented away

  • The Modbus driver family never took the bus lock, while the dispatcher's comment claimed it
    waited two seconds for one. Harmless while only rs485Task touches a Transport — which is
    exactly why it was worth closing.
  • Command outcomes were keyed on a caller-chosen request id alone, so polling one device could
    return another's result. Dispatch was never affected; only the answer an operator reads.

Five documentation corrections

Including one that said enum mode setpoints cannot be expressed, when the profile driver has
implemented them since July.

Verification

1023 native cases, all eleven gates, four board builds. The 1CH build's four warnings are all
inside eModbus, none in src/ — checked again rather than carried over from the last note.

Two commits since v0.27.0, both fixes. No new capability, so a patch.

One live bug: g_coredump was read and written across three tasks with no lock --
the erase action clears it from the AsyncTCP task while bridgeInfo() copies its
std::string and backtrace from loop(), rs485Task and AsyncTCP, roughly four times
a second. That is a use-after-free waiting for two cores to line up, not a stale
read.

Two dormant traps closed rather than documented away: the Modbus driver family
never took the bus lock while the dispatcher's comment claimed it waited two
seconds for one, and command outcomes were keyed on a caller-chosen request id
alone, so polling one device could return another's result. Dispatch was never
affected by the second -- only the answer an operator reads.

Five documentation claims corrected, including one that said enum mode setpoints
cannot be expressed when the profile driver has implemented them since July.

VERIFIED: 1023 native cases, all eleven gates, four board builds. The 1CH build's
four warnings are all inside eModbus, none in src/ -- checked again rather than
carried over from the last note.
Copilot AI lite review requested due to automatic review settings August 10, 2026 10:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the firmware patch version to 0.27.1 and records the release-notes narrative in src/main.cpp alongside prior version notes, aligning the in-source version constants with the stated patch release.

Changes:

  • Bump HELIOGRAPH_VERSION_PATCH from 0 to 1 (0.27.1).
  • Add a detailed 0.27.1 release-notes comment describing the fixes found during review.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/main.cpp
Comment on lines +506 to +509
// Worth recording HOW it survived: the declaration's own comment named the mutation -- "the one
// thing that CAN change it" -- and then argued for three lines that the cached copy is accurate.
// Thirty lines above sits g_configMutex, written for this exact hazard, with a comment describing
// this exact shape. The reasoning stopped one step short of its own conclusion.
@Timdebruijn
Timdebruijn merged commit c0c8a18 into main Aug 10, 2026
8 checks passed
@Timdebruijn
Timdebruijn deleted the chore/bump-0-27-1 branch August 10, 2026 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants