Skip to content

Commit 6770b53

Browse files
Peter Arganyfacebook-github-bot
authored andcommitted
Added lock around RN module initialization to fix crash
Summary: T35879909 is a UBN caused by a race condition in RN initialization. I haven't been able to repro, but the crash logs point to a bad memory access in this method. Another thread must be deallocating something concurrently. This is a quick fix to patch into v197. Reviewed By: fkgozali Differential Revision: D12904277 fbshipit-source-id: 5740183f9a7c8f2c45ca627662891cb0c1048764
1 parent 28de61e commit 6770b53

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

React/CxxBridge/RCTCxxBridge.mm

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -706,9 +706,11 @@ - (void)registerExtraLazyModules
706706

707707
- (void)registerAdditionalModuleClasses:(NSArray<Class> *)modules
708708
{
709-
NSArray<RCTModuleData *> *newModules = [self _initializeModules:modules withDispatchGroup:NULL lazilyDiscovered:YES];
710-
if (_reactInstance) {
711-
_reactInstance->getModuleRegistry().registerModules(createNativeModules(newModules, self, _reactInstance));
709+
@synchronized (self) {
710+
NSArray<RCTModuleData *> *newModules = [self _initializeModules:modules withDispatchGroup:NULL lazilyDiscovered:YES];
711+
if (_reactInstance) {
712+
_reactInstance->getModuleRegistry().registerModules(createNativeModules(newModules, self, _reactInstance));
713+
}
712714
}
713715
}
714716

0 commit comments

Comments
 (0)