Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use [RCTUIManager viewForReactTag:] instead of viewRegistry to avoid infinite loop in [RCTComponentViewRegistry objectForKey:] #5957

Merged
merged 1 commit into from
May 1, 2024

Conversation

tomekzaw
Copy link
Member

@tomekzaw tomekzaw commented Apr 30, 2024

Summary

This PR fixes the following infinite loop:

obraz

For details, see expo/expo#28531.

Test plan

  1. Build Example app on iOS Paper on 0.74.0
  2. Open Bokeh example
  3. Go back
  4. Reload the app by pressing r in Metro console
  5. Repeat steps 2-4 several times
  6. When the app hangs, press pause button in Xcode debugger

…oid infinite loop in `[RCTComponentViewRegistry objectForKey:]`
@piaskowyk piaskowyk added this pull request to the merge queue May 1, 2024
Merged via the queue into main with commit 1c46a97 May 1, 2024
13 checks passed
@piaskowyk piaskowyk deleted the @tomekzaw/fix-uimanager-infinite-loop branch May 1, 2024 07:45
github-merge-queue bot pushed a commit that referenced this pull request May 5, 2024
…5976)

## Summary

Fixes
#5973.

```
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<RCTUIManager 0x600002bbd340> valueForUndefinedKey:]: this class is not key value coding-compliant for the key _uiManager.'
*** First throw call stack:
(
	0   CoreFoundation                      0x00000001804ae138 __exceptionPreprocess + 172
	1   libobjc.A.dylib                     0x0000000180087db4 objc_exception_throw + 56
	2   CoreFoundation                      0x00000001804adcdc -[NSException init] + 0
	3   Foundation                          0x0000000180d6acf8 -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 188
	4   Foundation                          0x0000000180d69c60 -[NSObject(NSKeyValueCoding) valueForKey:] + 260
	5   ReanimatedExample                   0x0000000104a079c0 __70-[REASwizzledUIManager reanimated_uiBlockWithLayoutUpdateForRootView:]_block_invoke + 48
	6   ReanimatedExample                   0x0000000104bf23fc __RCTExecuteOnMainQueue_block_invoke + 40
	7   libdispatch.dylib                   0x0000000108557ec4 _dispatch_call_block_and_release + 24
	8   libdispatch.dylib                   0x000000010855973c _dispatch_client_callout + 16
	9   libdispatch.dylib                   0x00000001085693f8 _dispatch_main_queue_drain + 1228
	10  libdispatch.dylib                   0x0000000108568f1c _dispatch_main_queue_callback_4CF + 40
	11  CoreFoundation                      0x000000018040e9a0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
	12  CoreFoundation                      0x00000001804090b8 __CFRunLoopRun + 1936
	13  CoreFoundation                      0x0000000180408514 CFRunLoopRunSpecific + 572
	14  GraphicsServices                    0x000000018ef06ae4 GSEventRunModal + 160
	15  UIKitCore                           0x00000001853e8040 -[UIApplication _run] + 868
	16  UIKitCore                           0x00000001853ebcc8 UIApplicationMain + 124
	17  ReanimatedExample                   0x00000001048a26cc main + 96
	18  dyld                                0x00000001075b1544 start_sim + 20
	19  ???                                 0x000000010784a0e0 0x0 + 4421099744
	20  ???                                 0xfb7e800000000000 0x0 + 18122062688073809920
)
libc++abi: terminating due to uncaught exception of type NSException
```

This PR is a follow-up to
#5957.

Note that SETs still don't work properly after reload but this is not a
regression from this PR as it also happens on main.

## Test plan

1. Launch Reanimated Example app
2. Open "[SET] Card" example
3. Reload the app
4. Confirm there's no crash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants