VSIKnowledge

Reference

Traps and known issues

Every entry here cost real time on this machine and was confirmed by a run, not inferred. Dates are when it was measured. Read this page before the first long session with VSI.

Licensing

  • The VSI client reads only saltd increments in dual-signed AUTH form. A feature the server serves under mgcld is invisible to it, however green lmstat looks. saltd.log is the oracle: UNSUPPORTED ... PORT_AT_HOST_PLUS is a SALT refusal. (2026-09-05)
  • The fabric server checks out VeloceStratoOS (bundle mentorall_s) at simulation start, after every client has connected. Without it the run sits at "Attempting to checkout license" forever. Served since 2026-09-08.
  • Install additional licence files as their own .lic and reread; never through the Siemens installer, never with a server restart, never mixed vendor increments in one file. (2026-09-05 to 2026-09-07)
  • lmreread prints a -139 timeout that is false; a reread can still restart saltd, which then serves nothing for 10 to 12 minutes while looking dead. (2026-09-06)

Generating and building

  • mingw32-make sim waits forever at the control prompt under a redirected console. Run vsiSim TWIN.dt --batch --run instead. (2026-09-08, twice)
  • generate without -overwrite does nothing and says nothing. generate -overwrite wipes the user regions; re-apply glue afterwards. (2026-09-05)
  • Six vendor PDF statements differ from the binary (no C++ UART gateway, GPIO only to a virtual platform, signal list syntax, two ports per TCP socket, opposite directions on connect signals, frame list brackets). The binary's help is the oracle. (2026-09-05)
  • In PowerShell, capturing vsiBuild's or make's output into a variable stalls the build step; use Start-Process with redirected output files. (2026-09-06)
  • Copy-Item preserves file times, so make may skip recompiling a copied source. (2026-09-08)
  • Python components need a short workspace root; from the repository path the gateway link fails naming a missing .def file, which is a path-length failure. (2026-09-08)
  • A Python component whose Ethernet socket carries no connected signals is generated as invalid Python (empty method). The generator keeps such blocks C++ and says so; the glue compiles every Python file it touches. (2026-09-08, reproduced with controls)

Running

  • The fabric's ports are fixed at 50101 plus the component index and sat inside the Windows dynamic range; an unrelated socket could take one and the twin stalled at client connect with no licence request. Fixed machine-wide with a dynamic-range move and an administered exclusion 50101 to 50200; an administered exclusion still permits an explicit bind, unlike a Hyper-V dynamic reservation. XL_TLM_SOCKET_PORT_NUM logs a port change and does not perform it. (2026-09-08)
  • Windows Firewall prompts for every new FabricServer binary; unattended runs hang on the prompt. Notify-on-listen was turned off and a loopback rule added. (2026-09-08)
  • On the 63-component twin the fabric server exits with 0xC0000374 at teardown after a complete run; --enableStats then reports failure. Judge by traces and the fabric log's Total SystemC time. The two-component templates exit 0. (2026-09-08)
  • A C++ client runs from vsi.sim\_logs, a Python client from the twin root; files written relative to the working directory land in different places. (2026-09-08)

Behaviour and verification

  • Every CAN node transmits its frame every step, consumers included. On Wildfire's 22-node frame the 21 consumers drowned the producer and every consumed value read zero for 100 steps. Mute consumers (the glue does). A block across regions also muted the component's other sends; an early return deadlocks the handshake. (2026-09-08)
  • A bus name with a space in the # bus comment folds every flow into one unnamed bus at period 1: the twin builds, runs and passes the link check with the wrong rates. Names are written as one token. (2026-09-08)
  • The fabric delivers within a step to components scheduled after the producer, so lag 0 is real; a checker window that excluded it failed correct links. (2026-09-08)
  • The glue must rewrite every region it owns on every apply; a skipped empty region kept stale lines from an earlier glue version. (2026-09-08)
  • A checker is not a checker until it has failed on known-bad input; the self-test freezes a consumer and forces a producer to the wrong period and requires both to be caught.

Working on this machine with Claude Code

  • FIXED 2026-09-09. A hook installed by ruflo init in the user's Claude settings ran every hook event through a cmd /c wrapper that nested double quotes inside an already-quoted string, so cmd.exe re-parsed the line and the hook payload (a Bash command's text, an edit's text, a prompt) reached its parser. A redirect sign in that text wrote the file named by the next token in the session's working directory, before the command ran; a comma after the name was a delimiter and was dropped. It truncated a tracked 60 KB command file twice and left hundreds of zero-byte files named after code fragments. All 16 hook commands now go through a node launcher with no cmd.exe in the path; the marker probe that proved the defect no longer creates a file. The fault was intermittent, so the evidence is structural rather than a reproduction that stopped. Keep the habit of git status --porcelain plus a zero-byte check over tracked files after long commands; it costs nothing. Memory hooks-cmd-exe-redirect-trap has the history. (2026-09-08 found, 2026-09-09 fixed)
  • Inline python -c with dict-shaped text in Git Bash leaves zero-byte files named after the words; use a quoted heredoc. (2026-09-06)
  • Backslashes in Windows paths collapse inside a Python or PowerShell heredoc; \t and \a become tab and bell and print as nothing. Build paths with chr(92) or use the Edit and Write tools. (2026-08-17 onward)

Source: innexis-vsi/README.md, twin_glue/README.md, templates/README.md, memory innexis-vsi-install and hooks-cmd-exe-redirect-trap (all EXERCISED, dated inline) · retrieved Tue Sep 08 2026 00:00:00 GMT+0000 (Coordinated Universal Time)