Add try/catch around handle_message() to catch errors during logging. #57004
+41
−1
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.
Fixes #56889.
Before this PR, an exception thrown while constructing the objects to log (the
msg
) would be caught and logged. However, an exception thrown while printing the msg to an IO would not be caught, and can abort the program. This breaks the promise that enabling verbose debug logging shouldn't introduce new crashes.After this PR, an exception thrown during handle_message is caught and logged, just like an exception during
msg
construction:This PR respects the change made in #36600 to keep the codegen as small as possible, by putting the new try/catch into a no-inlined function, so that we don't have to introduce a new try/catch in the macro-generated code body.