|
FhSim
3.1.0
Marine systems simulation
|
Findings from code review that await an owner decision or an implementation. Each issue is one file in issues/details/, which holds the evidence, the effect, the possible fix, the test that would prove it and the risk. Resolved issues are kept in issues/resolved/ so that their numbers are never reused. Issues that concern a SimObject are also shown on that model's documentation page.
file:line given in the detail file, at HEAD.blocked item, get the owner's answer to "Decision needed" first, then set Status to ready.git mv the file to issues/resolved/, add a **Resolved:** <commit>, <date> paragraph after the table, delete the matching \xrefitem reviewissue "Review issues" "Review issues" \ref fhsim_core_issue_<ID> lines from the headers, rerun the script and commit it all together.New issue: --new <slug> "<title>", or add issues/details/<slug>.md with the metadata table but no ID row; the script assigns the next free number, writes the heading and renames the file to <TAG>-<ID>-<slug>.md.
BUG code does something other than its documentation or sibling code saysKNOWN-LIMITATION behaviour gap by design or omission, document rather than fix silentlyARCHITECTURE structure, dependencies, build layout, dead code and stale artefactsDOCUMENTATION missing or wrong documentation or exampleTEST test coverage or infrastructureAPI public name (port, state, parameter, registration string) whose change breaks input filesSECURITY credentials and supply chain3 wrong numbers, a crash or a secret exposure reaches a user2 a documented interface does not work as documented1 tidiness, readers and tools onlyblocked needs the owner decision named in the fileready fully specified| ID | Class | Severity | Status |
|---|---|---|---|
| FHSIM-0028 | BUG | 2 | blocked |
| FHSIM-0036 | BUG | 2 | ready |
| FHSIM-0029 | BUG | 1 | ready |
02eaf6b8, 2026-09-22. File: resolved/FHSIM-0001-fmu-export-metadata-is-not-reproducible.mde34a721b, 2026-09-22. File: resolved/FHSIM-0002-simobject-vis-suffix-ignores-no-bundled-vis.md39bb410e, 2026-09-21. File: resolved/FHSIM-0003-visual-fmu-omits-plain-simobject-modules.md111e4922, 2026-09-22. File: resolved/FHSIM-0004-expression-evaluator-mangles-json-attributes.md6d769bef, 2026-09-22. File: resolved/FHSIM-0005-odefcn-local-state-indexing-is-unchecked.mde34a721b, 2026-09-22. File: resolved/FHSIM-0006-port-jacobian-workspace-not-cleared-for-direct-links.mdc0430cd5, 2026-09-22. File: resolved/FHSIM-0007-jacobian-callbacks-write-outside-their-block-unchecked.mdd8b3b0ff, 2026-09-23. File: resolved/FHSIM-0008-autocopy-resolves-model-file-references-against-two-directories.mdb4a0809d, 2026-09-23. File: resolved/FHSIM-0009-visual-simobject-module-needs-an-ogre-codec-outside-its-runpath.mdb005ec27, 2026-09-24. File: resolved/FHSIM-0010-jacobian-check-samples-only-near-initial-state.mdb005ec27, 2026-09-24. File: resolved/FHSIM-0011-jacobian-check-cannot-exempt-documented-partial-blocks.mdb005ec27, 2026-09-24. File: resolved/FHSIM-0012-jacobian-check-never-uses-nonzero-state-offset.mdb5dce5b1, 2026-09-24. File: resolved/FHSIM-0013-jacobian-check-reads-stale-port-caches.mdd509dcea, 2026-09-24. File: resolved/FHSIM-0014-implicit-euler-analytic-jacobian-reads-stale-port-caches.md9a8e820c, 2026-09-24. File: resolved/FHSIM-0015-sundials-jacobian-port-cache-state-unverified.md8c9e382b, 2026-09-24. File: resolved/FHSIM-0016-fmu-documentation-build-key-and-archive-can-disagree.mde8948f3e, 2026-09-24. File: resolved/FHSIM-0017-jacobian-offset-shift-guard-does-not-check-layout.md2556f64d, 2026-09-24. File: resolved/FHSIM-0018-jacobian-override-on-stateless-object-accepted.md8a90bca5, 2026-09-24. File: resolved/FHSIM-0019-jacobian-scope-override-cannot-tighten-cross-coupling.md7af90b83, 2026-09-24. File: resolved/FHSIM-0020-sundials-jacobian-probe-proves-values-not-buffer-liveness.md09476238, 2026-09-29. File: resolved/FHSIM-0021-harness-rms-hides-non-finite-and-subnormal-samples.mdresolved/FHSIM-0022-no-check-that-published-port-samples-are-finite.md82b4652a, 2026-09-29. File: resolved/FHSIM-0023-simobject-renderrelease-hook.mdf1d3bf1d, 2026-09-29. File: resolved/FHSIM-0024-jacobian-checker-rebuilds-clobber-simobject-file-output.mdf4090d17, 2026-09-29. File: resolved/FHSIM-0025-shared-resources-unresolved-during-initial-condition-setup.mddc1c7db5, 2026-09-29. File: resolved/FHSIM-0026-autocopy-warns-on-repeated-reference.md50f9fece, 2026-09-29. File: resolved/FHSIM-0027-rtf-tooltip-names-f4-for-sim-controls.mde8f634d6, 2026-09-28. File: resolved/FHSIM-0030-sundials-jacobian-callback-leaves-j-unfilled-when-claim-withdrawn.mdce8d0484, 2026-09-28. File: resolved/FHSIM-0031-model-above-46340-states-fails-assembly.md3a187c5b, 2026-09-28. File: resolved/FHSIM-0032-every-model-allocates-n-squared-jacobian-buffers.mdint, which overflows above 46 340 states. Resolved: a9aca817, 2026-09-28. File: resolved/FHSIM-0033-dense-jacobian-paths-index-with-int.mdd8fcf7f2, 2026-09-28. File: resolved/FHSIM-0034-numerical-jacobian-pass-perturbs-every-column.md77262664, 2026-09-29. File: resolved/FHSIM-0035-reverse-colouring-is-quadratic-and-unused.md34d71a51, 2026-10-03 (red before the fix: ISimObjectCreator.CreatorWithoutFileOutputOverride_IsNotAbstract and _DoesNotSuppressFileOutput failed with std::is_abstract_v<CreatorWithoutFileOutputFlag> true; green after it; full ctest 334/334). File: resolved/FHSIM-0037-is-file-output-suppressed-is-pure-virtual.md060e9e23, 2026-10-07 (red before the fix: InputReaderResolutionTest.AbsoluteFileName_OutsideBothSearchDirs_OpensThatFile failed with the path <cwd>//<absolute path>; green after it; testFhSim 685/685, full ctest 334/334). File: resolved/FHSIM-0038-inputreader-absolute-path.md5630a0f9 and 9424e96c, 2026-10-08 (the 4-object ring: 0.09 s on 1 core, 44.0 s on 8 before; 0.09 s on both after, output byte-identical. Model-scale Alfredo3 trawl: 77 s on 1 core, 2290 s on 8 before; 74 s and 70 s after. fhsim-parallel-perf 8 cores 1.0x serial; testFhSim 718/718 (685 before, 33 new), full ctest 335/335; trawlwriter's 8-core byte-identity tests pass. Table in fhsim_workspace/features/threadpool/FEATURE.md). File: resolved/FHSIM-0039-numcores-small-models-slow.mda4663c51, 2026-10-08 (1 ms spin and chained wake-ups: eight 170 us SimObjects 2.4 s on 8 cores, 4.0 s before, 14.8 s on one; sixteen 4.5 s, 6.3 s before. Thresholds: 4-object floor removed; 250 us kept, joined by a 1.5x speed-up bound; trawl models unchanged and 1- and 8-core output byte-identical. ThreadManager removed, Task kept. testFhSim 724/724, ctest 335/335. Tables in fhsim_workspace/features/threadpool-tuning/FEATURE.md). File: resolved/FHSIM-0040-parallel-thresholds-pool-spin.mdac758259, 2026-10-10 (option 1, owner decision: ReleaseSimulation_, shared by Terminate, Reset and the destructor, joins the worker after fpFreeContext and before m_dll.Unload(); Reset restarts it; SingleThreadWork::retire is idempotent. Test fmu-single-thread-work. Linux Release no-vis ctest 336/336, -L fmu 255/255, FMU directional-derivative and lifecycle tests --repeat until-fail:20 142/142; Debug no-vis the same: 336/336, 255/255, 142/142. The Windows crash was never reproduced, so the fix is unverified there; the libxml2 callback still runs asynchronously on a thread-pool thread, so a short window after the join remains, as noted under Possible fix). File: resolved/FHSIM-0041-fmu-unloads-simdll-before-worker-exits.mdtests/fmu/FhsimDllBridge_test.cpp, 2026-10-11 (as proposed: Load calls Unload() before it throws on missing exports, FhsimDllBridge.h documents that a throw leaves the bridge unloaded, and the unreachable IsLoaded() check after Load in ExitInitializationMode is removed. Test fmu-dll-bridge, which loads fhsim_partial_export_library, a module exporting only InitFromFile and FreeFhSimContext; it failed before the fix with IsLoaded() true and fpInitFromFileNoVis/fpFreeContext set). File: resolved/FHSIM-0042-fmu-dllbridge-load-leaves-handle-on-missing-exports.md