From cd8f221dddc300230d9602288500940c9c849802 Mon Sep 17 00:00:00 2001 From: Emil Date: Wed, 2 Sep 2026 20:57:08 +0300 Subject: [PATCH] Fix real bugs from independent review (docs/review-handoff.md) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A second AI session read the whole codebase in parallel (read-only, no code changes) and left a handoff doc. Addressed the correctness findings: - PhysicsWorld.Sync's early return compared _bodies.Count to live.Count, not their contents — same size, different membership (destroy one tracked GameObject, gain one untracked-because-no-collider one; or any Restore where the scene has both a Rigidbody+collider object and a Rigidbody-without-one) skipped cleanup entirely, leaking the native Box3D body forever. Fixed by checking the actual stale set. Two new regression tests reproduce the review's own two scenarios via a new Lingua_GetBodyCount native export, asserting on the native table's own count rather than PhysicsWorld's C#-side bookkeeping. - TryCreateBody stored handle -1 (native shim refused: invalid world, or its 8192-slot body table full) as if it were real — every later GetBodyTransform on it silently teleported the GameObject to the origin with a degenerate rotation, no error anywhere. Now checked and warned once, same as the missing-collider case. - PluginHost.Load didn't roll back anything when Configure threw partway through: Schedule.Add/Events.Subscribe registrations it already made stayed forever, and its ALC was never unloaded — neither loaded (no _loaded entry) nor cleanly unloadable. Fixed with try/catch: best-effort Shutdown (the only thing that knows which services this plugin provided), RemoveAllFrom on both Schedule and EventBus, best-effort ALC unload, rethrow. New fixture plugin (sandbox.failing-configure, mirrors sandbox.echo's own real-load pattern) registers a system against a shared Ping component then throws, so FailedConfigureRollbackTests can assert the dangling system actually stops firing — an earlier version tried to prove this via AssemblyLoadContext.All instead, which passed even against the deliberately-reverted buggy code (the ALC turned out to get collected either way once its only references went out of scope); watching the dangling system is what actually distinguishes rolled-back from not, confirmed by deliberately reverting the fix and watching this specific test fail before restoring it. - Engine.Host's "r " left a plugin unloaded on a failed reload with no honest indication of that, and retrying threw "not loaded" instead of ever reaching Load again. Added PluginHost.IsLoaded so the handler only calls Unload when there's something to unload, and the failure message now says the plugin is unloaded, not just "failed." - AssetService.ReloadWithRetry's `when (attempt < 4)` guard meant the 5th and final IOException fell out of the loop and propagated from a discarded fire-and-forget Task — no log, no event, nothing. Now logged. - EditorState.Selected kept pointing at a GameObject Restore had already destroyed after ExitPlay, so Inspector/gizmo would silently keep editing something no longer in the world. EditorPlugin.DrawUi now compares IsPlaying against its own previous frame (not just reacting to the Stop button) so this is caught whether Play was exited via the button or the "stop" stdin command — the same stdin-vs-real-control gap already hit once earlier this session — and re-resolves the selection by name. - README.md and kernel-contract.md's Event Bus/Time rows had fallen a milestone behind (still said "no asset system yet" and "no fixed-step accumulator yet" after both shipped). Full suite: 98 tests. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01N1qPfzq8TDCUMFMV3UwV5N --- LinguaEngine.sln | 18 ++++ README.md | 19 +++- docs/kernel-contract.md | 6 +- native/physics-native/lingua_physics.c | 15 +++ .../Engine.Assets/AssetService.cs | 10 ++ .../Engine.Editor/EditorPlugin.cs | 41 +++++++ .../Engine.Editor/EditorState.cs | 5 +- .../engine.physics/Engine.Physics/Native.cs | 6 ++ .../Engine.Physics/PhysicsWorld.cs | 37 +++++-- .../native/linux-x64/liblingua_physics.so | Bin 1042632 -> 1042680 bytes .../FailingConfigurePlugin.cs | 41 +++++++ .../Sandbox.FailingConfigure.csproj | 10 ++ plugins/sandbox.failing-configure/plugin.json | 7 ++ src/Engine.Host/Program.cs | 15 ++- src/Engine.Kernel/Plugins/PluginHost.cs | 39 ++++++- .../Engine.ConformanceHarness.csproj | 14 +++ .../FailedConfigureRollbackTests.cs | 100 ++++++++++++++++++ .../Engine.Physics.Tests/PhysicsWorldTests.cs | 72 +++++++++++++ 18 files changed, 439 insertions(+), 16 deletions(-) create mode 100644 plugins/sandbox.failing-configure/Sandbox.FailingConfigure/FailingConfigurePlugin.cs create mode 100644 plugins/sandbox.failing-configure/Sandbox.FailingConfigure/Sandbox.FailingConfigure.csproj create mode 100644 plugins/sandbox.failing-configure/plugin.json create mode 100644 tests/Engine.ConformanceHarness/FailedConfigureRollbackTests.cs diff --git a/LinguaEngine.sln b/LinguaEngine.sln index 1250894..455da5d 100644 --- a/LinguaEngine.sln +++ b/LinguaEngine.sln @@ -85,6 +85,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PhysicsDemoGame", "samples\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PhysicsDemoGame.Tests", "tests\PhysicsDemoGame.Tests\PhysicsDemoGame.Tests.csproj", "{0201686F-0E2A-400F-8166-CBD11B65D724}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sandbox.failing-configure", "sandbox.failing-configure", "{AB8A31F6-ADF4-A607-5774-F0AC7E353102}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sandbox.FailingConfigure", "plugins\sandbox.failing-configure\Sandbox.FailingConfigure\Sandbox.FailingConfigure.csproj", "{428A0279-9B16-473D-92BC-858D4ABB15E2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -407,6 +411,18 @@ Global {0201686F-0E2A-400F-8166-CBD11B65D724}.Release|x64.Build.0 = Release|Any CPU {0201686F-0E2A-400F-8166-CBD11B65D724}.Release|x86.ActiveCfg = Release|Any CPU {0201686F-0E2A-400F-8166-CBD11B65D724}.Release|x86.Build.0 = Release|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Debug|x64.Build.0 = Debug|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Debug|x86.Build.0 = Debug|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Release|Any CPU.Build.0 = Release|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Release|x64.ActiveCfg = Release|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Release|x64.Build.0 = Release|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Release|x86.ActiveCfg = Release|Any CPU + {428A0279-9B16-473D-92BC-858D4ABB15E2}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -449,5 +465,7 @@ Global {83FF5113-4091-0AE3-A9AD-50B7BB917258} = {9760813E-A577-3C56-DE20-0218A108BABD} {1AFDA567-D86A-43C8-91B9-34CC13F48FEF} = {83FF5113-4091-0AE3-A9AD-50B7BB917258} {0201686F-0E2A-400F-8166-CBD11B65D724} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {AB8A31F6-ADF4-A607-5774-F0AC7E353102} = {07D57EEB-2F50-60C4-C011-FE4FA775C9A8} + {428A0279-9B16-473D-92BC-858D4ABB15E2} = {AB8A31F6-ADF4-A607-5774-F0AC7E353102} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index e1fb5bb..a75164d 100644 --- a/README.md +++ b/README.md @@ -116,8 +116,23 @@ and is unit-tested on its own — including the case a screenshot can't easily catch, dragging an object parented under a non-uniformly-scaled parent. -No physics yet — see the build order (M0–M4) in -[`docs/kernel-contract.md`](docs/kernel-contract.md) for what's next. +**M4 in progress.** `engine.physics` wraps Box3D and `engine.audio` wraps +miniaudio, both through a deliberately narrow C shim — neither library's +own config structs (large, with function pointers and, for Box3D, at +least one type that "cannot be directly copied") cross the P/Invoke +boundary, only plain scalars and handles do. `samples/PhysicsDemo` ties +physics, audio, input, and rendering together in one running project with +`engine.editor` deliberately left out of its `project.json` — the +shippable configuration, not the dev one. `.github/workflows/build.yml` +builds and tests both native shims and the full solution on real +`ubuntu-latest` and `windows-latest` runners, since nothing on a single +Linux dev machine can otherwise verify the Windows half of M4's own "done +when." Still open: the build pipeline hasn't actually run on GitHub yet +(pending a `workflow` OAuth scope grant), and M4's "one small game" +target is the physics demo so far, not yet a scored 20-minute one. + +See the build order (M0–M4) in +[`docs/kernel-contract.md`](docs/kernel-contract.md) for the rest. Design and implementation are argued over in the same place: the doc is still the thing to disagree with before code changes to match. diff --git a/docs/kernel-contract.md b/docs/kernel-contract.md index 0753508..f223532 100644 --- a/docs/kernel-contract.md +++ b/docs/kernel-contract.md @@ -53,8 +53,8 @@ nothing. | 02 | **Scheduler** | Frame stages, topological system ordering, parallel execution of systems with disjoint declared access, and debug-mode enforcement of that access — see §7. Structural changes (adding/removing a `GameObject` or `Component`) are queued and applied at the stage boundary, so a running system never sees a collection mutate under it. | | 03 | **Plugin Host** | Manifest parsing, dependency resolution, ALC loading, unloading, reload. | | 04 | **Service Registry** | Publishing and discovering interfaces between plugins. Control path, not the hot path. | -| 05 | **Event Bus** | `Publish`/`Subscribe`, ownership-tracked and leak-safe the same way as the Scheduler's systems — see §7. `PluginHost` publishes `PluginLoaded`/`PluginUnloaded`; nothing publishes `GameObject` created/destroyed or asset-reloaded facts yet — the first because `GameWorld` doesn't touch the bus at all (a publish on every structural change would tax the hot path for listeners that usually don't exist), the second because there's no asset system yet. | -| 06 | **Time & Log** | Frame clock (`DeltaTime`, `ElapsedTime`, `FrameCount`) and logging, both on `IPluginContext`. No fixed-step accumulator yet — deferred to M4, alongside the physics system it would actually drive. | +| 05 | **Event Bus** | `Publish`/`Subscribe`, ownership-tracked and leak-safe the same way as the Scheduler's systems — see §7. `PluginHost` publishes `PluginLoaded`/`PluginUnloaded`; `engine.assets` publishes `TextureReloaded` when a watched file changes on disk (M2). Still nothing publishes `GameObject` created/destroyed facts — `GameWorld` doesn't touch the bus at all, deliberately: a publish on every structural change would tax the hot path for listeners that usually don't exist. | +| 06 | **Time & Log** | Frame clock (`DeltaTime`, `ElapsedTime`, `FrameCount`, `FixedDeltaTime`) and logging, both on `IPluginContext`. The fixed-step accumulator (`Time.ConsumeFixedSteps`) shipped with M4, driving `Stage.FixedUpdate` — `engine.physics` is its first real consumer. | `GameObject.Transform` is the one field embedded directly rather than modeled as a `Component` subclass — it's a plain struct holding local @@ -436,7 +436,7 @@ cost of changing course is still zero. | **M1** | **Window, input, a triangle.** Three separate plugins over Silk.NET. First real-load test of the data channel. | The triangle's color changes by editing system code, with no app restart. | | **M2** | **Assets and scenes.** Hot-reloading asset plugin, scene format, `World` serialization. | Swapping a texture on disk changes the picture with nothing stopped; a scene loads and saves. | | **M3** | **Editor as plugins — done.** Shell (`engine.editor`, ImGui over the live scene, see §5 and the new `Stage.Present`), reflection-based inspector and hierarchy, Play/Stop on snapshots, a real 3D translate gizmo driven by the actual camera. | Entering Play takes under 100 ms — the original complaint about Unity is closed. Proven twice: `WorldSnapshotTests` (kernel, 300 `GameObject`s) and a real editor run against `samples/WindowDemo` (13ms, logged by `PlayModeController`). | -| **M4** | **One small game, end to end.** `engine.physics` over Box3D, audio, a Linux + Windows build pipeline. A 20-minute game, shipped as an executable. | The build runs on both platforms with no editor plugins in the shipped binary. | +| **M4** | **One small game, end to end — in progress.** `engine.physics` (Box3D) and `engine.audio` (miniaudio) done, both over a narrow, scalars-only P/Invoke shim; `samples/PhysicsDemo` ties physics/audio/input/render together with `engine.editor` deliberately excluded from its `project.json`; `.github/workflows/build.yml` builds and tests on real `ubuntu-latest`/`windows-latest` runners. Not yet: the workflow has actually run on GitHub (blocked on an OAuth `workflow` scope grant), and the demo is a physics sandbox, not yet a scored 20-minute game. | The build runs on both platforms with no editor plugins in the shipped binary. | --- diff --git a/native/physics-native/lingua_physics.c b/native/physics-native/lingua_physics.c index c2b98f5..28680c2 100644 --- a/native/physics-native/lingua_physics.c +++ b/native/physics-native/lingua_physics.c @@ -83,6 +83,21 @@ LINGUA_API void Lingua_DestroyWorld( int32_t worldHandle ) g_worldUsed[worldHandle] = false; } +// Exists so C# can assert on the native side's own bookkeeping directly — +// PhysicsWorld's C#-side _bodies dictionary can look correct while the +// native table underneath it has leaked a body Sync should have destroyed +// (see PhysicsWorldTests for the regression this catches). +LINGUA_API int32_t Lingua_GetBodyCount( void ) +{ + int32_t count = 0; + for ( int32_t i = 0; i < LINGUA_MAX_BODIES; i++ ) + { + if ( g_bodyUsed[i] ) + count++; + } + return count; +} + LINGUA_API void Lingua_WorldStep( int32_t worldHandle, float timeStep, int32_t subStepCount ) { if ( !ValidWorld( worldHandle ) ) diff --git a/plugins/engine.assets/Engine.Assets/AssetService.cs b/plugins/engine.assets/Engine.Assets/AssetService.cs index 4d4c9a8..34ad7ca 100644 --- a/plugins/engine.assets/Engine.Assets/AssetService.cs +++ b/plugins/engine.assets/Engine.Assets/AssetService.cs @@ -84,6 +84,16 @@ internal sealed class AssetService(IEventBus events, ILogger log) : IAssetServic { await Task.Delay(50); } + catch (IOException ex) + { + // The 5th and final attempt — the `when` guard above only + // covers attempts 0-3, so this is the one case that used + // to fall out of the loop and propagate from a + // fire-and-forget Task (`_ = Task.Run(...)`) as an + // unobserved exception: no log, no event, nothing to show + // the reload silently never happened. + log.Warn($"Giving up reloading '{path}' after 5 attempts: {ex.Message}"); + } } } diff --git a/plugins/engine.editor/Engine.Editor/EditorPlugin.cs b/plugins/engine.editor/Engine.Editor/EditorPlugin.cs index 3f8ba2f..799fb51 100644 --- a/plugins/engine.editor/Engine.Editor/EditorPlugin.cs +++ b/plugins/engine.editor/Engine.Editor/EditorPlugin.cs @@ -37,6 +37,7 @@ public sealed class EditorPlugin : IPlugin private PlayModeController? _playMode; private IEngineWindow? _window; private ICameraService? _camera; + private bool _wasPlaying; public void Configure(IPluginContext ctx) { @@ -107,10 +108,50 @@ public sealed class EditorPlugin : IPlugin ImGui.Text(_playMode.IsPlaying ? "(Playing)" : "(Edit mode)"); ImGui.End(); + // Found by independent review: ExitPlay's Restore destroys every + // GameObject and rebuilds fresh instances from the snapshot, but + // EditorState.Selected kept pointing at the old, now-detached one + // — Inspector and the gizmo would silently keep editing an object + // no longer in the world. Comparing against last frame's own + // IsPlaying (not just reacting to the button above) catches this + // uniformly regardless of *how* Play exited — the Stop button + // here, or the "stop" stdin command Engine.Host already processed + // before this Render-stage system ran this frame; the button + // alone would miss the second path entirely, the same + // stdin-vs-real-control gap already hit once this session. + if (_wasPlaying && !_playMode.IsPlaying) + { + var previousName = _state.Selected?.Name; + _state.Selected = previousName is null ? null : FindByName(world.Roots, previousName); + } + _wasPlaying = _playMode.IsPlaying; + HierarchyPanel.Draw(world, _state); InspectorPanel.Draw(_state); _gizmo.Draw(_state, _camera!, _window!); _controller.Render(); } + + // Best-effort by name, not identity — Restore rebuilds fresh + // GameObject instances, so there's no identity to match against + // anymore. Two siblings sharing a name (nothing stops it, same caveat + // HierarchyPanel's own PushID-by-hashcode already documents) means + // this picks the first match, not necessarily "the same one" — an + // acceptable approximation for reselecting after Play, not a + // guarantee. + private static GameObject? FindByName(IReadOnlyList roots, string name) + { + foreach (var go in roots) + { + if (go.Name == name) + return go; + + var found = FindByName(go.Children, name); + if (found is not null) + return found; + } + + return null; + } } diff --git a/plugins/engine.editor/Engine.Editor/EditorState.cs b/plugins/engine.editor/Engine.Editor/EditorState.cs index 59113e0..47bbc76 100644 --- a/plugins/engine.editor/Engine.Editor/EditorState.cs +++ b/plugins/engine.editor/Engine.Editor/EditorState.cs @@ -7,7 +7,10 @@ namespace Engine.Editor; /// Hierarchy panel last clicked, so the Inspector panel (built against this /// same instance) knows what to show. One instance per EditorPlugin, not /// static: reloading engine.editor should start with nothing selected, not -/// hold a reference to a GameObject that may not even exist anymore. +/// hold a reference to a GameObject that may not even exist anymore. The +/// same staleness can happen without a reload too — see EditorPlugin. +/// DrawUi's IsPlaying-transition check, which re-resolves this after +/// ExitPlay's Restore replaces every GameObject with a fresh instance. /// internal sealed class EditorState { diff --git a/plugins/engine.physics/Engine.Physics/Native.cs b/plugins/engine.physics/Engine.Physics/Native.cs index 59e4931..d31f69d 100644 --- a/plugins/engine.physics/Engine.Physics/Native.cs +++ b/plugins/engine.physics/Engine.Physics/Native.cs @@ -29,6 +29,12 @@ internal static class Native [DllImport(Lib)] public static extern void Lingua_WorldStep(int worldHandle, float timeStep, int subStepCount); + /// Total live bodies across every world — a test-only escape + /// hatch (see PhysicsWorldTests) to assert on the native side's own + /// bookkeeping, not just PhysicsWorld's C#-side dictionary. + [DllImport(Lib)] + public static extern int Lingua_GetBodyCount(); + [DllImport(Lib)] public static extern int Lingua_CreateBoxBody( int worldHandle, diff --git a/plugins/engine.physics/Engine.Physics/PhysicsWorld.cs b/plugins/engine.physics/Engine.Physics/PhysicsWorld.cs index aeb5427..c41db77 100644 --- a/plugins/engine.physics/Engine.Physics/PhysicsWorld.cs +++ b/plugins/engine.physics/Engine.Physics/PhysicsWorld.cs @@ -20,7 +20,7 @@ internal sealed class PhysicsWorld : IDisposable private readonly int _handle; private readonly ILogger _log; private readonly Dictionary _bodies = []; - private readonly HashSet _warnedMissingCollider = []; + private readonly HashSet _warnedFailed = []; public PhysicsWorld(Vector3 gravity, ILogger log) { @@ -39,14 +39,23 @@ internal sealed class PhysicsWorld : IDisposable TryCreateBody(go); } - if (_bodies.Count == live.Count) + // Comparing counts alone would miss this: destroying one tracked + // GameObject and gaining a different untracked one in the same + // Sync leaves _bodies.Count == live.Count with the sets actually + // different — the stale native body would never get destroyed and + // would keep simulating forever. Restore (every ExitPlay) hits + // this reliably whenever the scene has both a Rigidbody+collider + // GameObject and a Rigidbody-without-collider one, since the + // latter never enters _bodies to begin with. + var stale = _bodies.Keys.Where(go => !live.Contains(go)).ToList(); + if (stale.Count == 0) return; - foreach (var stale in _bodies.Keys.Where(go => !live.Contains(go)).ToList()) + foreach (var go in stale) { - Native.Lingua_DestroyBody(_bodies[stale]); - _bodies.Remove(stale); - _warnedMissingCollider.Remove(stale); + Native.Lingua_DestroyBody(_bodies[go]); + _bodies.Remove(go); + _warnedFailed.Remove(go); } } @@ -111,11 +120,25 @@ internal sealed class PhysicsWorld : IDisposable } else { - if (_warnedMissingCollider.Add(go)) + if (_warnedFailed.Add(go)) _log.Warn($"'{go.Name}' has a Rigidbody but no BoxCollider/SphereCollider — no physics body created."); return; } + // -1 means the native shim refused (an invalid world handle, or + // its fixed-capacity body table — 8192 — is full). Storing it + // anyway would silently "work": every later Lingua_GetBodyTransform + // call on handle -1 fails ValidBody's check and leaves the out + // params at their P/Invoke-zeroed default, teleporting the + // GameObject to the origin with a degenerate all-zero rotation + // every FixedUpdate — no exception, no log, just a wrong position. + if (handle < 0) + { + if (_warnedFailed.Add(go)) + _log.Warn($"'{go.Name}' failed to create a native physics body (world invalid or body table full)."); + return; + } + _bodies[go] = handle; } diff --git a/plugins/engine.physics/Engine.Physics/native/linux-x64/liblingua_physics.so b/plugins/engine.physics/Engine.Physics/native/linux-x64/liblingua_physics.so index de72e275cc67971bcc8cb9f4f6a873359538b8b5..1aa03d1787c6130f3efdd2204a914d00807a19e9 100755 GIT binary patch delta 90451 zcmZrY2V7J+^Ca)ReQ$x~E$SkuR2NxLnu;9-MFqunB1N(H-h1zIh;7yJ&hDL_clKM) z=-B`p*t^)Vuf6xefAW^Q@4oMU`eU;*nM{&NGMP*!n|G$(hcor&SxAlf!PT9OC7rZ? z#**{!22GlOdB1xn=B5FEr`B7<*Q@otVckT;|Bd~N3Ulk} z&xdG5oX%T=>D<`e%W`Xl_F}73PP*2Z#@;=lr_S!<`2zlh;~&L88ULJO3XR4|PM##e zsZ>B0D)PK4_!nh;NlPmIN*^G*A5~psRfGs@ODYn@x=koec3NBEXL;*n{H&^dHqk!I zYq{;U?6uN@+96GJXtGqm4COsKpyf^0zOT@}&#@9IoP5+U8#N5& z->svh2okMf&uX9Vi@EalywEUVR)1Z%)gpQlqXv)EK5ub4YoX4Q?AJ=zHFycaziIgk zwa>lU=QfREEdQ)|6Gc(N$>2086u;oVR*u9e00)cXJ8^m8zXV6(RHqof)tVy*l{kV} zPUTn8k)1@XA&SpL=VGE4VGeZX;=-?r$qS1sQ<0AUTaABOWfl!|igYASZHoCsL^u$! z#rWSb<@BqH>4);c#($&n5AoKC%39aP-G|j5*ll!!fx`z3vz5~?7A8755&T~TCx{X0 z{P6Fm`HOWd_d=4+v@|~S}7UN3w?u|2A?=++sUaaNIPUDKX^nyCw4#_`co|+ma9UpsZ`TS?r|s4>Lt~O{U2Q0>&;EcU z_%GY~(oou3U@#^)eRN<>pKvT9Ma#!7{e?gE-}qIlwT0kR_&@kg)=0N-GRWH5tu%?T zjdpA7{=45Ci8Qy(4IDv8W2-L6m-Mt&2s%QFtj~g~Rf^A&hX3m36nQp2Yb%%EydFKm zRNrY@?dlFCerh%$N8@Y082&2bwAEruPe>(eWT;OG!_RI`@m-HhszaTIRgKRwd_7?899oXv{K+~oG@VSgUJDH( zX;v}p7qZQ|G0e*w*0?#^7ps6 z>hpK_clLFhYK*RH+n>5oM-puPI>r*x!nV1S7a@ymd7VEiq^9j)pId@kPz8fid{#em z#A`K8^0C~IAj95*`c5B9{6}$(d zZ6cX$yEZ0z$!!U}%35Z+ zFDY-UH9bXc*&z|kt_Bv5|?m~ zhU)Wt>|%bVsg~`)q9!6r+U>_{gp{y7URsTi+O~k@!wEe!-TK3dKe

`V#tZs%`ix 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 Yk}OLDv>3M?QzLTQJ%$E-m(=V30VG;Fpa1{> delta 90275 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 hw+}yEhP3=MQmk@ZN^5Z1 +/// A test fixture, not a real plugin — exists only so +/// FailedConfigureRollbackTests can exercise PluginHost.Load's rollback +/// path against a real ALC/assembly load, the same way sandbox.echo exists +/// for the successful-load path. Registers a system that increments a +/// shared Ping component (so there's a real, deterministic side effect for +/// the test to check — did the dangling system actually get removed, not +/// just "did the ALC eventually get GC'd," which turned out to happen +/// either way regardless of whether rollback ran, making it useless as a +/// regression signal here), then throws — reproducing "Configure got +/// partway through before failing," not "Configure failed immediately." +/// +public sealed class FailingConfigurePlugin : IPlugin +{ + public void Configure(IPluginContext ctx) + { + ctx.Schedule.Add(Stage.Update, Tick).Writes(); + ctx.Events.Subscribe(_ => { }); + + throw new InvalidOperationException("deliberate failure for PluginHostTests"); + } + + public void Shutdown(IPluginContext ctx) + { + ctx.Schedule.RemoveAllFrom("sandbox.failing-configure"); + ctx.Events.RemoveAllFrom("sandbox.failing-configure"); + } + + private static void Tick(IWorld world) + { + foreach (var go in world.Query()) + go.GetComponent()!.Count++; + } +} diff --git a/plugins/sandbox.failing-configure/Sandbox.FailingConfigure/Sandbox.FailingConfigure.csproj b/plugins/sandbox.failing-configure/Sandbox.FailingConfigure/Sandbox.FailingConfigure.csproj new file mode 100644 index 0000000..873ddcf --- /dev/null +++ b/plugins/sandbox.failing-configure/Sandbox.FailingConfigure/Sandbox.FailingConfigure.csproj @@ -0,0 +1,10 @@ + + + + + + + diff --git a/plugins/sandbox.failing-configure/plugin.json b/plugins/sandbox.failing-configure/plugin.json new file mode 100644 index 0000000..429759b --- /dev/null +++ b/plugins/sandbox.failing-configure/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "sandbox.failing-configure", + "version": "0.1.0", + "assembly": "Sandbox.FailingConfigure.dll", + "dependsOn": {}, + "reloadable": true +} diff --git a/src/Engine.Host/Program.cs b/src/Engine.Host/Program.cs index 47bdf06..3ab8818 100644 --- a/src/Engine.Host/Program.cs +++ b/src/Engine.Host/Program.cs @@ -230,13 +230,24 @@ if (windowed) Console.WriteLine($"Reloading '{cmd.Argument}'..."); try { - host.Unload(cmd.Argument); + // Not unconditional: a plugin whose previous + // reload already failed inside Load (a bad + // Configure — now rolled back, see PluginHost. + // Load) isn't loaded any more, and Unload would + // just throw "not loaded" on this retry instead of + // ever reaching Load again. + if (host.IsLoaded(cmd.Argument)) + host.Unload(cmd.Argument); + host.Load(pluginDirectory); Console.WriteLine($"Reloaded '{cmd.Argument}'. World state and the window were untouched."); } catch (Exception ex) { - Console.Error.WriteLine($"Failed to reload '{cmd.Argument}': {ex.Message}"); + Console.Error.WriteLine( + $"Failed to reload '{cmd.Argument}': {ex.Message} " + + $"'{cmd.Argument}' is now unloaded (not just still running the old code) — " + + $"fix the error and run 'r {cmd.Argument}' again."); } break; diff --git a/src/Engine.Kernel/Plugins/PluginHost.cs b/src/Engine.Kernel/Plugins/PluginHost.cs index eb5f4a4..3da153e 100644 --- a/src/Engine.Kernel/Plugins/PluginHost.cs +++ b/src/Engine.Kernel/Plugins/PluginHost.cs @@ -73,7 +73,34 @@ public sealed class PluginHost( events.RegisterPlugin(manifest.Id, implAssembly); var ctx = new PluginContext(manifest.Id, world, services, schedule, events, time); - instance.Configure(ctx); + try + { + instance.Configure(ctx); + } + catch + { + // Configure can fail after already doing real work — Schedule. + // Add, Events.Subscribe, Services.Provide calls all happen + // before whatever line actually throws. None of that unwinds + // on its own, and because _loaded never gets an entry for this + // id below, the plugin ends up neither loaded nor unloadable: + // its ALC stays rooted forever and any systems/subscriptions it + // did register before throwing keep running. Best-effort + // Shutdown first — it's the only thing that knows which + // services this specific plugin provided, so it's the only way + // to Revoke them — then the two RemoveAllFrom calls PluginHost + // itself can make unconditionally, then unload the ALC. Each + // step is wrapped so a broken Shutdown/unload can't hide the + // real Configure failure being rethrown below. + try { instance.Shutdown(ctx); } catch { /* best-effort */ } + + schedule.RemoveAllFrom(manifest.Id); + events.RemoveAllFrom(manifest.Id); + + try { alc.Unload(); } catch { /* best-effort */ } + + throw; + } _loaded[manifest.Id] = new LoadedPlugin(manifest, alc, instance, ctx); events.Publish(new PluginLoaded(manifest.Id)); @@ -112,6 +139,16 @@ public sealed class PluginHost( return loadedIds; } + ///

+ /// Lets a caller check before calling Unload/Load instead of catching + /// InvalidOperationException to find out — Engine.Host's live-reload + /// command needs this: a plugin whose previous reload attempt failed + /// partway through Load isn't loaded any more (see Load's own rollback + /// on a Configure failure), so unconditionally trying Unload first + /// would itself throw "not loaded" on every retry. + /// + public bool IsLoaded(string pluginId) => _loaded.ContainsKey(pluginId); + /// /// Runs Shutdown(), then unloads the plugin's ALC. Returns a weak /// reference to the ALC so a caller can verify it actually collected — diff --git a/tests/Engine.ConformanceHarness/Engine.ConformanceHarness.csproj b/tests/Engine.ConformanceHarness/Engine.ConformanceHarness.csproj index 00cf5fc..1c684e1 100644 --- a/tests/Engine.ConformanceHarness/Engine.ConformanceHarness.csproj +++ b/tests/Engine.ConformanceHarness/Engine.ConformanceHarness.csproj @@ -32,6 +32,11 @@ the harness's Default ALC, which defeats the point of a leak test. --> + + +