Mac ARM64 vs X86
PlaneShift — Mac Shipping Build: ARM64 / x86_64 Architecture Issues
Environment: Unreal Engine 5.7.4, macOS Sonoma 14.6.1, Xcode 16.2, Apple Silicon M1.
1. Problem encountered — October 25, 2026
When building the Mac Shipping client, Unreal Engine started failing during cooking:
UnrealEditor-Cmd: Illegal instruction: 4
ExitCode=132
Cook failed
Even running UnrealEditor-Cmd -help produced the same error, before loading PlaneShift.
Root cause: conflicting architectures
The Mac Shipping script requested x86_64:
-architecture=x86_64
-specifiedarchitecture=x86_64
Without additional flags, UnrealBuildTool also rebuilt the Unreal Editor for x86_64, overwriting the working native ARM64 editor binaries.
We confirmed this in the logs:
Building PSUnrealEditor, ShaderCompileWorker,
UnrealPak and PSUnrealClient...
[15/911] Link [Intel] UnrealEditor-Core.dylib
The resulting x86_64 editor crashed under Rosetta with SIGILL.
Important: The exact cause of the illegal instruction inside the Intel editor was not conclusively established. The last library initializer reported before the crash was libembree4.4.dylib, making Embree a possible contributor.
Rebuilding Unreal Engine in Xcode for ARM64 restored the working editor.
2. Correct architecture configuration
The intended arrangement is:
| Component | Architecture |
|---|---|
| UnrealEditor | ARM64 |
| UnrealEditor-Cmd (cooker) | ARM64 |
| UnrealEditor-Core.dylib | ARM64 |
| UnrealEditor-PSUnreal.dylib | ARM64 |
| PSUnrealClient Shipping | x86_64 |
The cooking editor and its PlaneShift game module must have matching architectures. The packaged client can target a different architecture.
3. Required Shipping build flags
Keep the existing x86_64 client options, but add:
-nocompileeditor -skipbuildeditor
Full command:
/Volumes/DATA-2TB/5.7.4-release/Engine/Build/BatchFiles/RunUAT.command \
BuildCookRun \
-project="/Users/luke/PSUnreal511/PSUnreal.uproject" \
-nop4 \
-Prereqs \
-package \
-target=PSUnrealClient \
-clientconfig=Shipping \
-utf8output \
-specifiedarchitecture=x86_64 \
-platform=Mac \
-architecture=x86_64 \
-targetplatform=Mac \
-build \
-nocompileeditor \
-skipbuildeditor \
-cook \
-allmaps \
-pak \
-stage \
-archive \
-archivedirectory="/Users/luke/temp/PSUnreal_Ship"
These flags successfully prevented AutomationTool from rebuilding PSUnrealEditor for Intel in our tests.
The build log should list:
Building UnrealPak and PSUnrealClient...
It should NOT list:
Building PSUnrealEditor...
4. Pre-build verification commands
Run these before creating a Shipping release.
Check Unreal Editor executable
file /Volumes/DATA-2TB/5.7.4-release/Engine/Binaries/Mac/UnrealEditor-Cmd
Expected:
Mach-O 64-bit executable arm64
Check engine Core library
file /Volumes/DATA-2TB/5.7.4-release/Engine/Binaries/Mac/UnrealEditor-Core.dylib
Expected:
Mach-O 64-bit dynamically linked shared library arm64
Check PlaneShift editor module
file /Users/luke/PSUnreal511/Binaries/Mac/UnrealEditor-PSUnreal.dylib
Expected:
Mach-O 64-bit dynamically linked shared library arm64
Check Shipping client architecture
file /Users/luke/PSUnreal511/Binaries/Mac/PSUnrealClient-Mac-Shipping
Expected:
Mach-O 64-bit executable x86_64
Check installed build tools
uname -m
sw_vers
xcodebuild -version
5. Repairing the project editor module
If cooking fails with:
The game module 'PSUnreal' could not be found.
Please ensure that this module exists and that it is compiled.
First check UnrealEditor-PSUnreal.dylib.
In our case, this file was x86_64 while the engine was ARM64, so Unreal couldn't load it.
Rebuild the project editor module for ARM64:
cd /Volumes/DATA-2TB/5.7.4-release
./Engine/Build/BatchFiles/Mac/Build.sh \
PSUnrealEditor Mac Development \
-Project="/Users/luke/PSUnreal511/PSUnreal.uproject" \
-architecture=arm64
Verify the architecture again before launching the Shipping build.
6. If UnrealEditor-Cmd crashes again
Test the editor independently:
/Volumes/DATA-2TB/5.7.4-release/Engine/Binaries/Mac/UnrealEditor-Cmd -help
echo "Exit code: $?"
If the result is Illegal instruction: 4 (exit code 132):
- Check whether the editor binaries became x86_64.
- Inspect the build logs for
PSUnrealEditor Mac Development -architecture=x64. - Rebuild the editor for ARM64 in Xcode.
- Verify the PlaneShift editor module is also ARM64.
- Ensure the Shipping script contains
-nocompileeditor -skipbuildeditor.
An x86_64 editor is not automatically invalid, but that configuration caused startup crashes on this Mac.
7. Where to find cooking logs
AutomationTool logs are stored in:
~/Library/Logs/Unreal Engine/LocalBuildLogs/
The cooking log filename can change when AutomationTool copies it from the engine directory.
Find the latest logs:
ls -lt "$HOME/Library/Logs/Unreal Engine/LocalBuildLogs/" | head -20
To inspect the latest Cook log:
LOG=$(ls -t "$HOME/Library/Logs/Unreal Engine/LocalBuildLogs/"/Cook-*.txt | head -1)
tail -n 120 "$LOG"
8. Final notes
- Don't force the entire build environment into x86_64 using the old
arch -x86_64shell workaround. - Don't rebuild the Intel editor just because the game client targets Intel.
- Avoid running Xcode editor builds and Shipping builds simultaneously.
- Always verify both the engine and game-module architecture after rebuilding.
- The compilation phase can succeed even when the resulting editor cannot run.
- The ARM64 editor successfully progressed into static-mesh processing and Metal shader compilation after these fixes.
Resolution status: The ARM64 editor and matching PlaneShift editor module successfully reached the cooking stage with the new Shipping flags.