Add error handling in InspectorPackagerConnection::connect()#56713
Open
shubhamksavita wants to merge 1 commit intofacebook:mainfrom
Open
Add error handling in InspectorPackagerConnection::connect()#56713shubhamksavita wants to merge 1 commit intofacebook:mainfrom
shubhamksavita wants to merge 1 commit intofacebook:mainfrom
Conversation
Summary: Fix a SIGSEGV crash that can occur during WebSocket connection in the React Native JS inspector when `JCxxInspectorPackagerConnectionDelegateImpl::connectWebSocket()` fails (for example, due to allocation failure when constructing the WebSocket delegate hybrid object, or a JNI exception thrown from the Java side). Previously `InspectorPackagerConnection::Impl::connect()` had no error handling around the `connectWebSocket` call — any exception (`std::bad_alloc`, `JniException`, etc.) would propagate unhandled and terminate the process. ### Changes 1. **`InspectorPackagerConnection.cpp`**: Wrap `connectWebSocket` in try-catch. On failure, log the error, reset the WebSocket, and trigger `reconnect()` (existing 2-second retry mechanism). This is consistent with how other error paths in the same class already handle failures (e.g., `didFailWithError` and `didClose` both call `reconnect()`). 2. **`JCxxInspectorPackagerConnectionDelegateImpl.cpp`**: Add a null check on the JNI return value before calling `wrapInUniquePtr()` to prevent a null dereference if the Java method returns null. Changelog: [General][Fixed] - Handle exceptions thrown during WebSocket connect in `InspectorPackagerConnection` to avoid native crashes when the JS inspector fails to connect [Android][Fixed] - Add null check on JNI return value in `JCxxInspectorPackagerConnectionDelegateImpl::connectWebSocket` to prevent null dereference Differential Revision: D100956267
|
@shubhamksavita has exported this pull request. If you are a Meta employee, you can view the originating Diff in D100956267. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary:
Fix a SIGSEGV crash that can occur during WebSocket connection in the React Native JS inspector when
JCxxInspectorPackagerConnectionDelegateImpl::connectWebSocket()fails (for example, due to allocation failure when constructing the WebSocket delegate hybrid object, or a JNI exception thrown from the Java side).Previously
InspectorPackagerConnection::Impl::connect()had no error handling around theconnectWebSocketcall — any exception (std::bad_alloc,JniException, etc.) would propagate unhandled and terminate the process.Changes
InspectorPackagerConnection.cpp: WrapconnectWebSocketin try-catch. On failure, log the error, reset the WebSocket, and triggerreconnect()(existing 2-second retry mechanism). This is consistent with how other error paths in the same class already handle failures (e.g.,didFailWithErroranddidCloseboth callreconnect()).JCxxInspectorPackagerConnectionDelegateImpl.cpp: Add a null check on the JNI return value before callingwrapInUniquePtr()to prevent a null dereference if the Java method returns null.Changelog:
[General][Fixed] - Handle exceptions thrown during WebSocket connect in
InspectorPackagerConnectionto avoid native crashes when the JS inspector fails to connect[Android][Fixed] - Add null check on JNI return value in
JCxxInspectorPackagerConnectionDelegateImpl::connectWebSocketto prevent null dereferenceDifferential Revision: D100956267