dockerunreal-engine4linux-containers

How do I solve `amd64_is_imm32 (disp)` assertion error in official Unreal dev container?


I'm trying to use the official dev container provided by EpicGames but upon building one of the sample projects in the Engine, I'm met with this assertion error:

Setting up Mono
Start UAT: mono AutomationTool.exe BuildCookRun -utf8output -clientconfig=Shipping -serverconfig=Shipping -project=/home/ue4/UnrealEngine/Templates/TP_FirstPerson/TP_FirstPerson.uproject -noP4 -cook -build -stage -prereqs -pak -archive -server -platform=Linux -serverplatform=Linux -nodebuginfo -allmaps -archivedirectory=/home/ue4/UnrealEngine/Templates/TP_FirstPerson/dist
V: mono_create_corlib_exception_0
* Assertion at mini-amd64.c:214, condition `amd64_is_imm32 (disp)' not met

Some searching online tells me that mono is bundled with Unreal. I'm just at a loss for what this assertion is looking for or how to solve it.

edit: Adding context for future readers.

I was using an M1 mac and the M1 Docker for Desktop app. My best guess is the VM that supports Docker for Mac does not support the CPU intrinsic function as mentioned in the accepted answer.

I got past the issue by spinning up an EC2 Linux instance and attempting the build in docker the same way and I got past the error.


Solution

  • Your presented processor does not support the required CPU intrinsic, an immediate 32 bit literal argument.

    This problem is mostly caused by an older CPU, in which case a CPU upgrade is needed.

    If this appears on a new processor:

    This issue could be caused by software CPU emulation in virtualization software that does not support the intrinsic call.

    Make sure that the virtualization setting(s) are turned on in the BIOS settings to avoid software CPU emulation.