mirror of
https://github.com/NeuralNomadsAI/CodeNomad.git
synced 2026-10-21 05:06:37 +00:00
## Summary
Fix repeated Windows heap-corruption crashes in the installed Tauri
build. The pinned runtime exposes clonable, thread-safe handles whose
unsafe context graph contains Tao's non-atomic `Rc<EventLoopRunner>`.
IPC-worker clone/drop traffic races the event loop's reference count and
can free the runner prematurely.
- Use `Arc` for that internal Windows runner counter, retaining
main-thread confinement of runner state and the target's existing public
threading contract.
- Add an isolated regression using the real pinned Wry runtime's public
handle API, with a negative control that reverses only this counter in a
temporary crate copy.
- Add the Windows regression to CI and document the captured failures,
compatibility rationale and removal criteria.
This is a local compatibility correction for the runtime CodeNomad
ships. [tao#1290](https://github.com/tauri-apps/tao/pull/1290) proposed
the same counter change but was closed **without merging**, because the
underlying contract violation is Tauri moving/cloning the non-Send
target. That distinction is recorded explicitly. Related reports:
[tauri#15408](https://github.com/tauri-apps/tauri/issues/15408) and
[tauri#15793](https://github.com/tauri-apps/tauri/issues/15793).
## Validation
- `node scripts/test-tauri-runner-refcount.mjs --baseline`: **9 native
crashes / 10 negative-control processes; 5 / 5 corrected passes**,
800,000 handle clones plus teardown per process.
- `node scripts/test-tauri-input-deadlock.mjs --baseline`: keydown,
keyup, char, syschar, IME and instrumented IME-boundary checks pass; the
original/reverted negative controls reproduce their expected deadlocks.
- `cargo build --locked --release -p codenomad-tauri`: passes.
- `rustfmt --check` on the new fixture and `node --check` on its runner:
pass.
- Corrected release executable installed locally on the affected Windows
machine, retaining the existing resources and updater verification
public key; original executable and matching new symbols archived
locally.
The runtime reproduction needs no JavaScript or web page. The Virtua
0.53.5 upgrade is absent from the crashing `
|
||
|---|---|---|
| .. | ||
| architecture.md | ||
| BROWSER_AUTOMATION.md | ||
| BROWSER_DEVICE_EMULATION.md | ||
| CACHE_REFRESH_CONVENTIONS.md | ||
| DESKTOP_DATA_PROFILES.md | ||
| DEVELOPER_MODE.md | ||
| FILES_PANEL.md | ||
| HOTKEYS.md | ||
| INDEX.md | ||
| MISSIONS.md | ||
| MISSIONS_AUTONOMOUS_PLUGIN_REQUIREMENTS.md | ||
| MISSIONS_CONTINUITY_CONTRACT.md | ||
| MISSIONS_ENVIRONMENT_ADMISSION.md | ||
| MISSIONS_FAMILY_AUTHORITY.md | ||
| MISSIONS_HUMAN_ANSWER_RECEIPTS.md | ||
| MISSIONS_NATIVE_PRODUCT_ACCEPTANCE.md | ||
| MISSIONS_RECURRING_SIMPLE.md | ||
| MISSIONS_RECURRING_SIMPLE_QUALIFICATION.md | ||
| MISSIONS_REFACTOR_VALIDATION.md | ||
| MISSIONS_SESSION_RECOVERY.md | ||
| MISSIONS_WATCHED_SOURCES.md | ||
| NATIVE_INTERRUPTION_UX.md | ||
| OPENCODE_V2_COMPATIBILITY.md | ||
| OPENCODE_V2_POST_BETA.md | ||
| PALETTE_SOURCES.md | ||
| PANEL_EXTENSIONS.md | ||
| PLUGIN_ACTIVATION_CONTROLS.md | ||
| PROVIDER_ACCOUNTS_UX_PLAN.md | ||
| REMOTE_CONTROL.md | ||
| RUNTIME_MAINTENANCE.md | ||
| SESSION_ENVIRONMENT.md | ||
| SESSION_HISTORY_NAVIGATION.md | ||
| SESSION_HISTORY_QUERIES.md | ||
| SESSION_PRUNING_RPC.md | ||
| SESSION_PRUNING_SAFETY.md | ||
| solidjs-llms.txt | ||
| TAURI_UPDATER.md | ||
| TAURI_WINDOWS_RUNNER_REFCOUNT.md | ||
| USER_HELP.md | ||
| WORKTREE_SESSION_PLACEMENT.md | ||