Commit 9abb4eb
Fix iOS initialization race condition (#499)
We have a crash in our application, and based on our analysis the culprit is a
race condition in RNFetchBlobNetwork initialization.
Crashing thread:
Crashed: com.apple.root.default-qos
0 libobjc.A.dylib 0x10416bacb objc_msgSend + 11
1 Foundation 0x103d3b644 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:usingBlock:] + 153
2 Foundation 0x103c23f8c -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 61
3 Foundation 0x103c23f3a -[NSOperationQueue setMaxConcurrentOperationCount:] + 198
4 prymr 0x100d579aa -[RNFetchBlobNetwork init] (RNFetchBlobNetwork.m:112)
5 prymr 0x100d63a73 __65-[RNFetchBlob fetchBlob:taskId:method:url:headers:body:callback:]_block_invoke (RNFetchBlob.m:131)
6 prymr 0x100d6006b __85+[RNFetchBlobReqBuilder buildOctetRequest:taskId:method:url:headers:body:onComplete:]_block_invoke (RNFetchBlobReqBuilder.m:178)
7 libdispatch.dylib 0x107511585 _dispatch_call_block_and_release + 12
While a second thread is running:
com.apple.root.default-qos
0 libsystem_kernel.dylib 0x107891c22 __psynch_mutexwait + 10
1 libsystem_pthread.dylib 0x1078c6dfa _pthread_mutex_lock_wait + 100
2 libsystem_pthread.dylib 0x1078c4519 _pthread_mutex_lock_slow + 285
3 Foundation 0x103d3b615 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:usingBlock:] + 106
4 Foundation 0x103c23f8c -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 61
5 Foundation 0x103c23f3a -[NSOperationQueue setMaxConcurrentOperationCount:] + 198
6 prymr 0x100d579aa -[RNFetchBlobNetwork init] (RNFetchBlobNetwork.m:112)
7 prymr 0x100d63a73 __65-[RNFetchBlob fetchBlob:taskId:method:url:headers:body:callback:]_block_invoke (RNFetchBlob.m:131)
8 prymr 0x100d6006b __85+[RNFetchBlobReqBuilder buildOctetRequest:taskId:method:url:headers:body:onComplete:]_block_invoke (RNFetchBlobReqBuilder.m:178)
9 libdispatch.dylib 0x107511585 _dispatch_call_block_and_release + 12
The patch just adds a dumb double-synchronization to the initialization.1 parent 6ab9ba0 commit 9abb4eb
1 file changed
+6
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
110 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
111 | 115 | | |
112 | 116 | | |
113 | 117 | | |
| |||
0 commit comments