Fix Proxy Method Handling (toString, equals, hashCode) in OS Signal handling #9358
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.
This PR resolves an issue where the
Signal.scala
implementation caused a stack overflow during signal handling. The issue arises becausejava.lang.reflect.Proxy
was used for signal handling and default methods(toString, equals, hashCode)
were not explicitly handled. As a result, Calls totoString
on the proxy object led to recursive invocations as reported in the issue and reproducerThis fix draws from established practices for proxy behavior:
Implementing equals, hashCode and toString for Proxies
The fix adheres to Java's expectations and prevented recursion by ensuring these methods are handled directly in the
InvocationHandler
/claim #9321
Fixes #9321
Let me know any for clarifications of my solution or any suggestion or feedback to incorporate