You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4a31469
Browse filesBrowse the repository at this point in the historyBrowse files
[repro] Pull model: the stop transaction is not pulled, and the legacy stop deadlocks
With enableMountingCoordinatorPullModelAndroid, FabricUIManagerBinding::pullAndExecuteTransaction finds the surface's MountingCoordinator in the binding's surface registry. A surface is not in the registry while it stops:
- The transaction that stops a bridgeless surface is never pulled. native_stopSurfaceWithSurfaceHandler_pullModel_pullsDeletes records no Deletes.
- The legacy stopSurface(int) holds the registry lock across SurfaceHandler::stop(), and on the UI thread the stop commit pulls inline and blocks on the same lock. native_stopSurface_pullModel_pullsDeletes hangs.
native_stopSurfaceWithSurfaceHandler_pushModel_pullsDeletes is a control: push pulls the stop transaction in the stop commit.
The tests drive a real FabricUIManagerBinding through FabricMountingManagerTestHelper, which runs no JavaScript and commits views itself.
Copy file name to clipboardExpand all lines: packages/react-native/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp
Copy file name to clipboardExpand all lines: packages/react-native/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h
0 commit comments