Skip to content

Fix crash on startup with KSA r3646#56

Closed
Maximilian-Nesslauer wants to merge 20 commits intoStarMapLoader:devfrom
Maximilian-Nesslauer:fix/appbase-directory-for-ksa-3646
Closed

Fix crash on startup with KSA r3646#56
Maximilian-Nesslauer wants to merge 20 commits intoStarMapLoader:devfrom
Maximilian-Nesslauer:fix/appbase-directory-for-ksa-3646

Conversation

@Maximilian-Nesslauer
Copy link
Contributor

The problem: in KSA Version v2026.2.32.3646 (most likely commit https://discord.com/channels/1260011486735241329/1260112103134724146/1474293335723347999) added Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory) at the top of Program.Main() in Program.cs to fix a Linux startup crash.
When StarMap launches KSA via reflection, AppDomain.CurrentDomain.BaseDirectory resolves to StarMap's install directory (not KSA's), because it's the same process/AppDomain.
StarMap already sets the CWD correctly, but KSA's new code immediately overrides it.

The fix sets APP_CONTEXT_BASE_DIRECTORY to the game directory via AppContext.SetData().

This works because in .NET, AppDomain.CurrentDomain.BaseDirectory delegates to AppContext.BaseDirectory, which checks the APP_CONTEXT_BASE_DIRECTORY data store first before falling back to the process executable path.
By setting this to the game directory, KSA's Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory) will now correctly resolve to the game directory even when launched through StarMap.

Tested and verified with KSA r3646 and StarMap 0.3.6

Fixes #55

KlaasWhite and others added 20 commits November 15, 2025 19:43
Mods can implement the IStarMapOnUi to access OnBeforeUi and OnAfterUi which are called before and after the OnDrawUi of Program in KSA, this can be used to add or overwrite ui elements using ImGui
Only publish API when there is a change
Switch interface to use attributes instead of interfaces
Resolve issue in attribute resolution
Fixed issue with StarMap.API forcing dummy KSA dll
StarMapBeforeMainAttribute attribute + Fix issue with ALCs unloading after initialization
Change actions to publish StarMap.API to nuget instead of github
Make the AssemblyLoadContexts not collectable (StarMapLoader#42)
Do not try to unload the assembly load contexts (StarMapLoader#44)
Add StarMap hook for after onFrame
KSA r3646 added `Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory)`
at the top of Program.Main() to fix a Linux startup crash. When launched via StarMap,
AppDomain.CurrentDomain.BaseDirectory resolves to StarMap's directory instead of the
game directory, causing the game to look for assets in the wrong location.

Fix by setting APP_CONTEXT_BASE_DIRECTORY to the game directory, which is the backing
store for AppDomain.CurrentDomain.BaseDirectory in .NET.

Fixes StarMapLoader#55
@KlaasWhite KlaasWhite changed the base branch from main to dev February 21, 2026 12:27
@Maximilian-Nesslauer Maximilian-Nesslauer deleted the fix/appbase-directory-for-ksa-3646 branch February 21, 2026 12:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Crash on startup with KSA r3646

2 participants