Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Godot Export Fails on macOS GitHub Workflow Runner Due to Metal Driver #101873

Closed
onurtnrkl opened this issue Jan 21, 2025 · 4 comments
Closed

Godot Export Fails on macOS GitHub Workflow Runner Due to Metal Driver #101873

onurtnrkl opened this issue Jan 21, 2025 · 4 comments

Comments

@onurtnrkl
Copy link

onurtnrkl commented Jan 21, 2025

Tested versions

  • Reproducable in 4.4-beta1
  • Not reproducable in 4.3-stable

System information

GitHub Workflow Runner(macos-latest)

Issue description

We are encountering an issue when exporting a Godot project using the Godot Engine v4.4.beta1 version on a macOS GitHub workflow runner. The export process fails with the following error related to Metal:

Godot Engine v4.4.beta1.mono.official.d33da79d3 - https://godotengine.org
Metal 3.1 - Forward Mobile - Using Device #0: Apple - Apple Paravirtual device (Apple5)
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppleParavirtDevice newArgumentEncoderWithLayout:]: unrecognized selector sent to instance 0x12782a000'
*** First throw call stack:
(
Error: Godot export release failed
	0   CoreFoundation                      0x0000000180df22cc __exceptionPreprocess + 176
Notice: Cleaning up sensitive files...
	1   libobjc.A.dylib                     0x00000001808d6158 objc_exception_throw + 60
	2   CoreFoundation                      0x0000000180ea4568 -[NSObject(NSObject) __retain_OA] + 0
	3   AppleParavirtGPUMetalIOGPUFamily    0x00000001150b4f5c doUncompressedBlit + 11180
	4   Metal                               0x000000018b0bcec4 -[_MTLDevice newArgumentEncoderWithArguments:structType:] + 136
	5   Godot                               0x00000001043ffa14 _ZN26RenderingDeviceDriverMetal27shader_create_from_bytecodeERK6VectorIhERN22RenderingDeviceCommons17ShaderDescriptionER6StringRKS0_IN21RenderingDeviceDriver16ImmutableSamplerEE + 2984
	6   Godot                               0x00000001069a067c _ZN15RenderingDevice41shader_create_from_bytecode_with_samplersERK6VectorIhE3RIDRKS0_INS_7UniformEE + 708
	7   Godot                               0x0000000106b4f9d8 _ZN8ShaderRD16_compile_variantEjNS_11CompileDataE + 2272
	8   Godot                               0x000000010762aeb8 _ZN16WorkerThreadPool13_process_taskEPNS_4TaskE + 372
	9   Godot                               0x000000010762b818 _ZN16WorkerThreadPool16_thread_functionEPv + 304
	10  Godot                               0x0000000106fff324 _ZN6Thread8callbackEyRKNS_8SettingsEPFvPvES3_ + 148
	11  Godot                               0x0000000106fff770 _ZN6ThreadD1Ev + 148
	12  libsystem_pthread.dylib             0x0000000180c9df94 _pthread_start + 136
	13  libsystem_pthread.dylib             0x0000000180c98d34 thread_start + 8
)
libc++abi: terminating due to uncaught exception of type NSException

Steps to reproduce

Steps to Reproduce:
1. Set up a macOS runner in GitHub Actions.
2. Export a project using cli command without headless.
3. Export fails with the above error.

Minimal reproduction project (MRP)

N/A

@bruvzg
Copy link
Member

bruvzg commented Jan 21, 2025

It is already tracked it #101773

As a workaround for CI export, you can try using Vulkan driver by adding --rendering-driver vulkan to the command line.

@onurtnrkl
Copy link
Author

It is already tracked it #101773

As a workaround for CI export, you can try using Vulkan driver by adding --rendering-driver vulkan to the command line.

Thanks for pointing me to issue #101773 and suggesting the workaround! I tried adding --rendering-driver vulkan to the command line, and it worked perfectly in my CI setup.

@github-project-automation github-project-automation bot moved this from For team assessment to Done in Platforms Issue Triage Jan 21, 2025
@Calinou
Copy link
Member

Calinou commented Jan 21, 2025

You can also use --headless with --export to remove the GPU requirement during export.

@onurtnrkl
Copy link
Author

You can also use --headless with --export to remove the GPU requirement during export.

Due to issues like some meshes not appearing with headless export, as a workaround, I run it on a macOS runner without using headless, but thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Unassessed
Status: Done
Development

No branches or pull requests

4 participants