Foward ORT error messages on the C-ABI to exceptions thrown in winml #3316
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.
When layering was done, errors that occur on the c-abi boundary that are wrapped by OrtStatuses were not forwarded properly to winml exceptions, and only the translated HRESULT was surfaced, and not the message.
Fix: When a failing c-abi call is made, the RETURN_HR_IF_NOT_OK_MSG macro needs to set an issue an originateerror call to save the error string at the point of failure. The corresponding throw that occurs downstream needs to reuse that error message when creating the exception. This is done by calling winrt::hresult_error with from_abi_t, which will check to get the error message from there instead of clobbering it.