Skip to content

Linux smoke test crashes on 1.22.7: Mono.Cecil cannot resolve VintagestoryAPI for VSCreativeMod and VSEssentials #276

Description

@Zaldaryon

Stratum version

indev at HEAD, clean checkout. Not tied to a pending pull request.

Base game version

1.22.7

OS and .NET runtime

Linux and WSL, .NET 10

Stack trace

[Server Error] [VSCreativeMod.dll] An exception was thrown trying to load the ModInfo:
[Server Error] [VSCreativeMod.dll] Exception: Failed to resolve assembly: 'VintagestoryAPI, Version=1.22.7.0, Culture=neutral, PublicKeyToken=null'
   at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
   ...
   at Vintagestory.Common.ModContainer.LoadModInfoFromCode(...)

The same failure hits VSEssentials.dll. With both unresolved, survival's game dependency is reported missing, no mod systems load, and the server then throws an unhandled NullReferenceException in WorldConfig.loadWorldConfigValuesFromPlaystyle(), called from SaveGame.SetNewWorldConfig during ServerSystemModHandler.OnLoadAssets, which kills the process before it reaches RunGame.

What was happening

The server was loading assets during scripts/smoke-test.sh on a clean indev build. VintagestoryAPI.dll is present in the build output next to the mod DLLs, so this is Mono.Cecil's own resolver, used only for the IsModSystem metadata scan at ModContainer.cs:524, not being given the search path the normal .NET loader uses. It is not a missing file.

Reproduction steps

bash scripts/bootstrap.sh
dotnet build VintageStory.slnx -c Release
bash scripts/smoke-test.sh

On a clean indev checkout, Linux or WSL, .NET 10, base version 1.22.7.

Mods loaded

Stock bundled mods only: VSCreativeMod, VSEssentials, VSSurvivalMod. No third-party mods.

Note

This blocks the smoke-test half of the pre-PR gate in docs/agent/stratum.md and CONTRIBUTING.md for every branch, not one pull request. Likely fix area: give the Cecil resolver the mod output directory as an extra search path in the IsModSystem scan.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions