docs(index): ScadaBridge#34 FIXED — PID-1 crash wedge root-caused (SIGABRT ignored for PID 1); handler + init:true, live-verified
Claude-Session: https://claude.ai/code/session_014WNM4vjoVksyyBraTXSZE1
This commit is contained in:
@@ -271,11 +271,16 @@ endpoint failover between them is safe.
|
||||
- **Rewrap fan-out collapsed:** on ScadaBridge, `secret rewrap-all` is now ONE run against
|
||||
central's shared SQL store + both nodes of every site pair (runbook updated; the "both central
|
||||
nodes" caveat deleted). The denial-warning alerting note (sum per-window deltas) stands.
|
||||
- **Residual carried out:** [ScadaBridge#34](https://gitea.dohertylan.com/dohertj2/ScadaBridge/issues/34)
|
||||
— a pre-Serilog unhandled boot exception **wedges the container** (100% CPU spin, stays
|
||||
`running`, restart policy never fires). Pre-existing (old SQLite path too); reproduced twice
|
||||
during the gate. Not a secrets defect, but every pre-host fail-closed refusal lands in this
|
||||
window.
|
||||
- **Residual carried out — now FIXED+CLOSED (2026-08-08):** [ScadaBridge#34](https://gitea.dohertylan.com/dohertj2/ScadaBridge/issues/34)
|
||||
— a pre-Serilog unhandled boot exception **wedged the container** (100% CPU spin, stays
|
||||
`running`, restart policy never fires). Root cause: dotnet as container PID 1 — Linux
|
||||
ignores the SIGABRT the runtime's crash path raises against PID 1, so `abort()` could
|
||||
never kill the process. Fixed at `ScadaBridge main @ e9c412e5`: an
|
||||
`AppDomain.UnhandledException` handler exits `134` via the `exit()` syscall (any thread,
|
||||
registered before anything can throw; inert under test hosts) plus `init: true` on all 8
|
||||
compose nodes for the paths that bypass the managed event (`FailFast`, runtime aborts).
|
||||
Live-verified: the wedge repro now exits 134 with `RestartCount` climbing, trace intact,
|
||||
with and without init. Every pre-host fail-closed refusal now actually fail-fasts.
|
||||
|
||||
ScadaBridge pins `0.5.1`; the other three apps stay on the `0.2.3` libraries. Replication
|
||||
remains default-OFF in the product — production enablement is an operator action and no longer
|
||||
|
||||
Reference in New Issue
Block a user