Skip to content

Principia fails to load on macOS Sequoia (v15.2) - Unix 25.2.0.0 Detection Error Problem DescriptionΒ #4437

@1304674612

Description

@1304674612

I am attempting to run Principia on macOS Sequoia 15.2 (Apple Silicon) with a KSP 1.12.x RP-1 installation. Despite installing the required dependencies via Homebrew and manually patching the .so binary, the game fails to load the plugin and displays an error regarding OS detection and missing libraries.

System Environment:

OS: macOS Sequoia 15.2 (Kernel: Darwin 25.2.0)

Hardware: Apple M-series M4(Silicon)

KSP Version: 1.12.5 (Running via Rosetta 2)

Principia Version: principia lebesgue for 1.12.5.zip

Dependencies: LLVM 21 installed via Homebrew (/opt/homebrew/opt/llvm)

Detailed Error Message:

Steps Taken So Far:

Dependency Fix: I have installed llvm via Homebrew.

Binary Patching: I used install_name_tool to redirect the hardcoded /usr/local/opt/llvm@20/ paths inside principia.so to the correct local paths:

libc++abi.dylib -> /usr/lib/libc++abi.dylib

libc++.1.dylib -> /usr/lib/libc++.1.dylib

libunwind.1.dylib -> /opt/homebrew/opt/llvm/lib/unwind/libunwind.1.dylib

Verification: otool -L confirms all paths are correctly mapped.

Path Workaround: Created a literal directory named {0} inside GameData/Principia/macOS/ and placed the patched principia.so there to satisfy the loader's search pattern.

Permissions: Ran chmod u+w and sudo xattr -cr on the entire GameData directory.

Code Signing: Performed ad-hoc signing using codesign --force --deep --sign -.

Observed Behavior in KSP.log:
The log shows:
[LOG] Loading the x64 Principia DLL principia.so from paths: ...
[LOG] Principia DLL loaded at address 0000000000000000
The address remains 0x0, indicating a linking failure or a silent rejection by the macOS Gatekeeper/Hardened Runtime, even though the file is found.

Specific Question:
How can I get the Principia loader to correctly identify the macOS environment instead of falling back to the {0} Unix path pattern on Darwin 25.x? Is there a specific version of LLVM or a specific code-signing requirement for macOS Sequoia to prevent the null pointer load address?
I have uploaded my full KSP.log here: https://pastebin.com/B77Y618z

Here is the otool -L output of my patched principia.so:

Additional Context: I am running KSP on an external drive (or moved to local drive) and I've already applied codesign and xattr -cr.

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