• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / breadboard / 30588886189
97%

Build:
DEFAULT BRANCH: main
Ran 30 Jul 2026 10:58PM UTC
Jobs 1
Files 208
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

30 Jul 2026 10:56PM UTC coverage: 96.602% (+0.006%) from 96.596%
30588886189

push

github

web-flow
fix: shrink httpd worker task frames via bb_data shared scratch pair (#1152)

Root cause (hardware-confirmed, controlled A/B): the httpd worker task
stack-canary panics on POST /api/reboot 5/5 at CONFIG_BB_HTTP_TASK_STACK_SIZE
=6144, 0/5 at 16384. Raising the stack was rejected as the fix -- the five
bb_data-fed route handlers each hand-rolled their own
`char body[N+1]; char parse_scratch[3072];` stack locals, stacking up to
~5.5KB of a single handler's own frame on top of the rest of the httpd call
chain.

Design (user-approved): an additive, callee-owned bb_data_scratch_acquire()/
_release() pair inside bb_data, backed by one shared file-scope static
buffer (body 1025B + parse_scratch 3072B). bb_data_apply()'s existing
caller-owned-buffers signature/contract is unchanged. Safety rests on the
proven invariant that ESP-IDF's httpd dispatches exactly one synchronous
handler at a time on its single worker task; the SSE async path (the sole
async-handler caller in this codebase) never calls this pair, since it
renders on a separate broadcaster task. A debug-build assert() traps a
future reentrant acquire loudly; it's compiled out under BB_DATA_TESTING so
a host test can exercise the fail-closed BB_ERR_INVALID_STATE return
directly.

Migrated the five call sites: reboot_handler (bb_system_routes.c),
wifi_patch_handler (bb_wifi_http_routes.c), factory_reset_handler and
storage_delete_handler (bb_storage_http_routes.c), and
bb_ota_check_config_post_handler (bb_ota_check_common.c). Removed their
now-dead per-file PARSE_SCRATCH_BYTES defines/boilerplate.

DWARF frames (xtensa esp32, examples/smoke), before -> after:
reboot_handler 3504 -> 192, wifi_patch_handler 3600 -> 288,
storage_delete_handler 5552 -> 1456, bb_ota_check_config_post_handler
5312 -> 2192 (factory_reset_handler is not compiled into smoke).

Net device RAM cost (review finding 2, measured on-branch): this is NOT a
net RAM saving -- the per-handler frame reductions buy headroom INSIDE the
exis... (continued)

7979 of 8582 branches covered (92.97%)

Branch coverage included in aggregate %.

30 of 30 new or added lines in 2 files covered. (100.0%)

13568 of 13723 relevant lines covered (98.87%)

2610.47 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30588886189.1 30 Jul 2026 10:58PM UTC 208
96.6
GitHub Action Run
Source Files on build 30588886189
  • Tree
  • List 208
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30588886189
  • 3a290673 on github
  • Prev Build on main (#30587396835)
  • Next Build on main (#30591377870)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc