Improve logging for Metallib function lookup failures #7836
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If a .metallib was compiled with a target iOS version that's newer than the current device, loading the .metallib as an
id<MTLLibrary>
may succeed, but findingmain0
(or any other function in it) will fail and return nil. Currently, this causes a crash due to an assert; logging the error and returningMetalFunctionBundle::error()
will still crash, but in a way that's easier to diagnose.(Note that in practice, this will probably be a useless "Compiler encountered an internal error" message -- the GPU backend is crashing, and the Metal stub library sees as
XPC_ERROR_CONNECTION_INTERRUPTED
. It retries up to 3 times, crashing each time, and then gives up.)