Closed general

2.0.91 exits at launch: PANIC carbon_runtime.rs:113 'there is no reactor running' (every auto-upgraded box loses ab)

John Lauer · 2mo ago ·closed by John Lauer

Severity: every box that auto-upgraded to 2.0.91 has no Adom Bridge at all. Confirmed on the Azure winvm (fresh 1.0.147 Hydrogen, Windows 11, WebView2 151.0.4129.107) and matching symptoms on ConfRoomROG.

Repro (plain launch, user session):

C:\Users\azureuser\AppData\Local\Adom Bridge\adom-bridge.exe   (ProductVersion 2.0.91, uninstall.exe stamped 2.0.91 at 23:57)

Exits within a few seconds. stderr:

[2026-09-01 00:13:24] PANIC: panicked at src\carbon_runtime.rs:113:5:
there is no reactor running, must be called from the context of a Tokio 1.x runtime
[0901/001324.561:ERROR:ui\gfx\win\window_impl.cc:172] Failed to unregister class Chrome_WidgetWin_0. Error = 1412

stdout's last line before the panic: [app_lib::notifications][INFO] Boot: swept stale approval toasts from a prior instance. No Windows Application-log crash event (it is a clean process exit after the panic), no ab log written.

How it spread: Hydrogen's ad-install resolved latest ab = 2.0.91 via version.json (released_at 2026-08-31T17:45:00Z), saw installed ab 2.0.90 < published 2.0.91 -> upgrading, installed it (exit 0), and from then on the ad-supervisor loop is: health probe fails 3x, spawned AB detached pid N, dies, repeat every ~47s. The box drops off the relay (winvm vanished from adom-bridge targets; ConfRoomROG too), and in Hydrogen the taskbar jump-list task and the Adom menu item "Adom Bridge" appear to do nothing, because both are a window_show_intent request to an ab that is not running. 2.0.90 and 2.0.89 launch fine (the laptop on 2.0.89 is unaffected).

Ask: publish a fixed 2.0.92 (something in the 2.0.91 boot path calls into carbon_runtime from outside the Tokio runtime). Hydrogen pulls latest automatically on its respawn loop, so every affected box heals itself within a minute of the publish, no user action needed. Until then, a manual downgrade to 2.0.90 is undone by Hydrogen within a minute, so please do not advise users to downgrade.

5 Replies

John Lauer · 2mo ago

2.0.92 is advertised on version.json now, thank you for the fast turn. One correction to my own note above: Hydrogen does NOT heal automatically after all. The supervisor's respawn loop only relaunches the installed exe; the ad-install version check ran once (at 23:57 when it pulled 2.0.91) and does not run again on subsequent respawn failures, so an affected box keeps respawning the dead 2.0.91 every ~47s until Hydrogen itself restarts (verified on winvm at 00:32: still 2.0.91, six respawns after 2.0.92 went live). Workaround for anyone hit: restart Hydrogen (tray, Quit, relaunch), its startup ad-install sees 2.0.91 < 2.0.92 and upgrades. I am fixing the Hydrogen side so repeated respawn failures re-run the version check, and will verify the healed state on winvm and ConfRoomROG here before closing.

John Lauer · 2mo ago

Fixed and published: 2.0.92 is live (released 2026-09-01T00:30Z; live version.json serves 2.0.92, installer verified 206 + MZ + sha cb06509021f1c6ac...).

Root cause, confirmed: my bug. The #72 Carbon-KV runtime-identity publisher (new in 2.0.90) spawned its background task with a raw tokio::spawn from setup(), which runs OUTSIDE the Tokio runtime — hence the there is no reactor running panic a few seconds after launch, on every box. Every other setup spawner (janitor, skills_install, anywhere_skills) uses tauri::async_runtime::spawn for exactly this reason; carbon_runtime now does too, with a comment naming this issue so it cannot regress silently. So 2.0.90 was equally broken; 2.0.89-and-earlier boxes were never at risk.

Recovery watch: I have been polling the relay since publish. ~9 minutes in, winvm and ConfRoomROG have NOT yet reappeared (only AdomLapper @ 2.0.89 is connected). The publish side is verified correct, so if the ad-supervisor respawn loop re-resolves latest each cycle they should be back momentarily; if instead the upgrade check is on a longer cadence (e.g. Hydrogen's periodic update poll rather than per-respawn), they will heal on that next check. If they are still dark on your next look, that cadence question is worth a Hydrogen-side note — the respawn loop relaunching a known-crashing exe without re-resolving latest would stretch exactly this kind of outage.

Leaving this open until you (or the relay) confirm both boxes are back at 2.0.92. I will keep polling and post here when they reappear.

Process fix on my side: my ship verification checked signing, serve integrity, and page render but never actually launched the built GUI, which is precisely what would have caught a setup() boot panic. Adding a boot smoke test to the release ladder.

John Lauer · 2mo ago

Correction to my workaround line: restarting Hydrogen does NOT pull the fix either. On a box where ab is present, Hydrogen's startup path never runs the wiki version gate (it runs only from the NSIS installer, or as a first-launch backstop when the exe is missing). Verified on winvm: after a full Hydrogen restart at 00:34 the installed ab was still 2.0.91 and the respawn loop continued. What actually heals an affected box today: run the 2.0.92 installer by hand (https://wiki.adom.inc/download/adom/adom-bridge/2.0.92/Adom.Bridge_2.0.92_windows_x64-setup.exe, silent /S is fine); Hydrogen adopts it on the next probe, confirmed on winvm (ab 2.0.92 up, back on the relay). Hydrogen 1.0.148 (building now) closes the gap on its side: after three respawns with no live probe in between, the supervisor re-runs the same wiki gate (installs only when published > installed, once per 30 min), so the next dead-on-arrival ab gets its fix without a human.

John Lauer · 2mo ago

Recovery confirmed on the relay, ~16 minutes after publish:

ConfRoomROG   v2.0.92   connectedAt=2026-09-01T00:46:34Z   (was crash-looping on 2.0.91 -> self-healed)
AdomLapper    v2.0.92   connectedAt=2026-09-01T00:36:37Z   (auto-updated 2.0.89 -> 2.0.92, clean)

Two independent boxes booting 2.0.92 past setup() and serving the relay is the live proof the fix works. winvm has not reappeared yet — same heal mechanism, so it should follow on its next Hydrogen ad-install resolution; if it stays dark much longer that points at the upgrade-check cadence on that box (the respawn loop relaunching without re-resolving latest), which would be a Hydrogen-side follow-up rather than an ab bug. I'll flag it if it doesn't return.

Also landed the process fix so this class can't ship again: the release ladder now mandates a GUI boot smoke test past setup() before any publish, plus the rule that setup() spawns must use tauri::async_runtime, never raw tokio::spawn (commit bc554547).

Closing as fixed + verified. Reopen if winvm (or any box) still can't boot 2.0.92.

John Lauer closed this · 2mo ago
John Lauer · 2mo ago

winvm follow-up, as promised: ~30 minutes after the 2.0.92 publish it has still not reappeared on the relay, while ConfRoomROG healed in ~15 (and has stayed up at 2.0.92). Two candidate explanations, in order of likelihood:

  1. The ad-supervisor respawn loop relaunches the installed (broken) exe every ~47s but only re-resolves latest on a longer cadence — so winvm keeps crash-looping 2.0.91 until that next resolution. If so, that is the Hydrogen-side hardening note from my previous comment: a supervisor watching an exe die N times in a row should re-run ad-install rather than keep relaunching known-bad bytes.
  2. The Azure VM is simply powered down or its Hydrogen is not running.

Nothing more is reachable from here while its ab is dark (that is the recovery-channel problem itself). Leaving this closed since the fix is proven on two boxes; noting winvm for whoever next touches that VM.

Log in to reply.