[__SwiftNativeNSError release]: message sent to deallocated instance 0x600000c83160
marosoaie opened this issue · comments
I've been seeing a weird behaviour when casting a Swift.Error to an NSError.
I managed to reproduce the issue using a simple project:
enum MyError: Error {
case pleaseCrash
}
class ViewModel {
private let action: Action<Void, Bool, NSError>
private let needsReset = MutableProperty(false)
init() {
action = Action<Void, Bool, NSError> { input in
return SignalProducer(error: MyError.pleaseCrash as NSError)
}
needsReset <~ action.errors.map { error in
if error is URLError {
return false
}
return true
}
}
func activate() {
action.apply().start()
}
}
Calling the activate function leads to a EXC_BAD_ACCESS crash. By running it with zombies enabled I can see that the crash is caused by a release called on a __SwiftNativeNSError (like mentioned in the title).
Something I find very strange is that if I remove the if error is URLError ...
statement the crash goes away.
I'm using ReactiveSwift 6.2.1 and Xcode 13.1.
Any ideas what might be causing this?
Do you use ReactiveCocoa? Could you please show the complete stack trace?
Not using ReactiveCocoa. The complete stacktrace is:
stack trace: 0 ??? 0x0000000131fc9623 0x0 + 5133604387
1 TestingCrashes 0x00000001024b01a0 main + 0
2 CoreFoundation 0x0000000106774b60 ___forwarding___ + 1200
3 CoreFoundation 0x0000000106776f78 _CF_forwarding_prep_0 + 120
4 libswiftCore.dylib 0x000000010549c8ab _ZN12_GLOBAL__N_117destroyGenericBoxEPN5swift10HeapObjectE + 27
5 libswiftCore.dylib 0x000000010549bf10 _swift_release_dealloc + 16
6 TestingCrashes 0x00000001025478d0 $s13ReactiveSwift13GeneratorCore33_8C2AEE826CBF26B7535B1491D314A4F4LLCfd + 64
7 TestingCrashes 0x0000000102547913 $s13ReactiveSwift13GeneratorCore33_8C2AEE826CBF26B7535B1491D314A4F4LLCfD + 51
8 libswiftCore.dylib 0x000000010549bf10 _swift_release_dealloc + 16
9 TestingCrashes 0x00000001024b5e68 $s13ReactiveSwift6ActionC5state9enabledIf7executeACyxq_q0_Gqd___Sb5ValueQyd__cAA14SignalProducerVyq_q0_GAI_xtctcAA16PropertyProtocolRd__lufcAKyq_AA0C5ErrorOyq0_GGAG_xtcfU4_yAA0I0C8ObserverCyq_AP_G_AA8LifetimeCtcfU_ + 1480
10 TestingCrashes 0x00000001024baca9 $s13ReactiveSwift6ActionC5state9enabledIf7executeACyxq_q0_Gqd___Sb5ValueQyd__cAA14SignalProducerVyq_q0_GAI_xtctcAA16PropertyProtocolRd__lufcAKyq_AA0C5ErrorOyq0_GGAG_xtcfU4_yAA0I0C8ObserverCyq_AP_G_AA8LifetimeCtcfU_TA + 89
11 TestingCrashes 0x0000000102542418 $s13ReactiveSwift14SignalProducerVyACyxq_GyAA0C0C8ObserverCyxq__G_AA8LifetimeCtccfcAA0cD4CoreC8InstanceVyxq__GycfU_yycfU_ + 168
12 TestingCrashes 0x0000000102544476 $s13ReactiveSwift10SignalCore33_8C2AEE826CBF26B7535B1491D314A4F4LLC5startyAA10Disposable_pAA0C0C8ObserverCyxq__GAaF_pXEF + 310
13 TestingCrashes 0x00000001025485ad $s13ReactiveSwift14SignalProducerV5startyAA10Disposable_pAA0C0C8ObserverCyxq__GF + 125
14 TestingCrashes 0x00000001024b1ffc $s14TestingCrashes9ViewModelC8activateyyF + 92
15 TestingCrashes 0x00000001024b2712 $s14TestingCrashes11ContentViewV4bodyQrvgyycfU_ + 50
16 SwiftUI 0x00000001030f6789 $s7SwiftUI33PrimitiveButtonStyleConfigurationV7triggeryyF + 25
17 SwiftUI 0x000000010320e830 $s7SwiftUI33PrimitiveButtonStyleConfigurationV7triggeryyFTA + 16
18 SwiftUI 0x000000010343eeda $s7SwiftUI25PressableGestureCallbacksV8dispatch5phase5stateyycSgAA0D5PhaseOyxG_SbztFyycfU_ + 58
19 SwiftUI 0x000000010329b78c $sIeg_ytIegr_TR + 12
20 SwiftUI 0x00000001033fa581 $sIeg_ytIegr_TRTA + 17
21 SwiftUI 0x00000001033fb3d9 $sIeg_ytIegr_TRTA.46 + 9
22 SwiftUI 0x000000010329b7ac $sytIegr_Ieg_TR + 12
23 SwiftUI 0x000000010329b78c $sIeg_ytIegr_TR + 12
24 SwiftUI 0x000000010328d051 $sIeg_ytIegr_TRTA + 17
25 SwiftUI 0x000000010328cdc2 $s7SwiftUI6UpdateO15dispatchActionsyyFZ + 530
26 SwiftUI 0x000000010328c706 $s7SwiftUI6UpdateO3endyyFZ + 102
27 SwiftUI 0x00000001032cfa83 $s7SwiftUI19EventBindingManagerC4sendyySDyAA0C2IDVAA0C4Type_pGF + 291
28 SwiftUI 0x000000010366af13 $s7SwiftUI22UIKitGestureRecognizerC4send025_062C14327F4C9197D92807A7H6DF7F3BLL7touches5event5phaseSayAA7EventIDVGShySo7UITouchCG_So7UIEventCAA0Q5PhaseOtF + 67
29 SwiftUI 0x000000010366b1ac $s7SwiftUI22UIKitGestureRecognizerC12touchesEnded_4withyShySo7UITouchCG_So7UIEventCtF + 12
30 SwiftUI 0x000000010366b8d3 $s7SwiftUI22UIKitGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtFToTm + 131
31 SwiftUI 0x000000010366b1e8 $s7SwiftUI22UIKitGestureRecognizerC12touchesEnded_4withyShySo7UITouchCG_So7UIEventCtFTo + 40
32 UIKitCore 0x0000000110443e18 -[UIGestureRecognizer _touchesEnded:withEvent:] + 142
33 UIKitCore 0x000000011091f1b6 -[UITouchesEvent _sendEventToGestureRecognizer:] + 673
34 UIKitCore 0x0000000110438200 __47-[UIGestureEnvironment _updateForEvent:window:]_block_invoke + 70
35 UIKitCore 0x000000011043833a -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 259
36 UIKitCore 0x000000011043817f -[UIGestureEnvironment _updateForEvent:window:] + 200
37 UIKitCore 0x00000001108d74b0 -[UIWindow sendEvent:] + 4574
38 UIKitCore 0x00000001108b253b -[UIApplication sendEvent:] + 356
39 UIKit 0x000000012a103bd4 -[UIApplicationAccessibility sendEvent:] + 85
40 UIKitCore 0x000000011093371a __dispatchPreprocessedEventFromEventQueue + 6847
41 UIKitCore 0x00000001109361e0 __handleEventQueueInternal + 5980
42 CoreFoundation 0x00000001066d3471 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
43 CoreFoundation 0x00000001066d339c __CFRunLoopDoSource0 + 76
44 CoreFoundation 0x00000001066d2b74 __CFRunLoopDoSources0 + 180
45 CoreFoundation 0x00000001066cd87f __CFRunLoopRun + 1263
46 CoreFoundation 0x00000001066cd066 CFRunLoopRunSpecific + 438
47 GraphicsServices 0x00000001082cabb0 GSEventRunModal + 65
48 UIKitCore 0x0000000110899d4d UIApplicationMain + 1621
49 TestingCrashes 0x00000001024b01eb main + 75
50 libdyld.dylib 0x0000000107642c25 start + 1
Here's a sample project that uses the ViewModel class I posted above: https://github.com/marosoaie/NSErrorCrash
I noticed the same problem [__SwiftNativeNSError release]: message sent to deallocated instance
. The crash occurs in ReactiveSwift after sending to the observer. The problem originates from an Enum conforming to Swift.Error
which is being being cast to NSError.
Here is my stacktrace:
- 0 : "0 ??? 0x00000001079d056c 0x0 + 4422698348"
- 1 : "1 MyApp 0x0000000104eae8b8 main + 0"
- 2 : "2 MyApp 0x0000000104def17c $s18MyApp_iOS9AppActionOwxx + 924"
- 3 : "3 ReactiveSwift 0x0000000105d286e0 $s13ReactiveSwift6SignalC8ObserverC5value6failed9completed11interruptedAEyxq__GyxcSg_yq_cSgyycSgAMtcfcyAC5EventOyxq__GcfU_ + 296"
- 4 : "4 ReactiveSwift 0x0000000105d28850 $s13ReactiveSwift6SignalC8ObserverC5value6failed9completed11interruptedAEyxq__GyxcSg_yq_cSgyycSgAMtcfcyAC5EventOyxq__GcfU_TA + 48"
- 5 : "5 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 6 : "6 ReactiveSwift 0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
- 7 : "7 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 8 : "8 ReactiveSwift 0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
- 9 : "9 ReactiveSwift 0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
- 10 : "10 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 11 : "11 ReactiveSwift 0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
- 12 : "12 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 13 : "13 ReactiveSwift 0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
- 14 : "14 ReactiveSwift 0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
- 15 : "15 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 16 : "16 ReactiveSwift 0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
- 17 : "17 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 18 : "18 ReactiveSwift 0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
- 19 : "19 ReactiveSwift 0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
- 20 : "20 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 21 : "21 ReactiveSwift 0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
- 22 : "22 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 23 : "23 ReactiveSwift 0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
- 24 : "24 ReactiveSwift 0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
- 25 : "25 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 26 : "26 ReactiveSwift 0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
- 27 : "27 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 28 : "28 ReactiveSwift 0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
- 29 : "29 ReactiveSwift 0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
- 30 : "30 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 31 : "31 ReactiveSwift 0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
- 32 : "32 ReactiveSwift 0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
- 33 : "33 ReactiveSwift 0x0000000105d10110 $s13ReactiveSwift15TransformerCore33_8C2AEE826CBF26B7535B1491D314A4F4LLC5startyAA10Disposable_pAA6SignalC8ObserverCyxq__GAaF_pXEFAJyq0_q1__GAaF_pXEfU_yAH5EventOyxq__GcfU_ + 84"
- 34 : "34 ReactiveSwift 0x0000000105d3e878 $s13ReactiveSwift6SignalC5EventO3mapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcqd__xclFZyAGcyAHc_AJtcfU_yAGcfU_ + 412"
- 35 : "35 ReactiveSwift 0x0000000105d48eb4 $s13ReactiveSwift6SignalC5EventO10attemptMapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcs6ResultOyqd__q_GxclFZyAGcyAHc_AJtcfU_yAGcfU_TATm + 40"
- 36 : "36 ReactiveSwift 0x0000000105d3e878 $s13ReactiveSwift6SignalC5EventO3mapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcqd__xclFZyAGcyAHc_AJtcfU_yAGcfU_ + 412"
- 37 : "37 ReactiveSwift 0x0000000105d48eb4 $s13ReactiveSwift6SignalC5EventO10attemptMapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcs6ResultOyqd__q_GxclFZyAGcyAHc_AJtcfU_yAGcfU_TATm + 40"
- 38 : "38 ReactiveSwift 0x0000000105d48090 $s13ReactiveSwift6SignalC5EventO5delay_2onyAEyxq__GcyAHc_AA8LifetimeCtcSd_AA13DateScheduler_ptFZyAHcyAHc_AJtcfU_yAHcfU0_yycfU0_TA + 52"
- 39 : "39 ReactiveSwift 0x0000000105d55524 $s13ReactiveSwift14QueueSchedulerC8schedule5after6actionAA10Disposable_pSg10Foundation4DateV_yyctFyycfU_TA + 60"
- 40 : "40 ReactiveSwift 0x0000000105d4fb9c $sIeg_IeyB_TR + 28"
- 41 : "41 libdispatch.dylib 0x0000000107663824 _dispatch_call_block_and_release + 24"
- 42 : "42 libdispatch.dylib 0x0000000107664dc8 _dispatch_client_callout + 16"
- 43 : "43 libdispatch.dylib 0x0000000107672a78 _dispatch_main_queue_callback_4CF + 1360"
- 44 : "44 CoreFoundation 0x000000019117dce4 <redacted> + 12"
- 45 : "45 CoreFoundation 0x0000000191178bac <redacted> + 1964"
- 46 : "46 CoreFoundation 0x00000001911780e0 CFRunLoopRunSpecific + 436"
- 47 : "47 GraphicsServices 0x00000001933f1584 GSEventRunModal + 100"
- 48 : "48 UIKitCore 0x00000001be38cc00 UIApplicationMain + 212"
- 49 : "49 MyApp 0x0000000104eaea3c main + 388"
- 50 : "50 libdyld.dylib 0x0000000190c36bb4 <redacted> + 4"
Xcode 11.5 / ReactiveSwift "6.3.0"
Hello. 👋 Thanks for opening this issue. Due to inactivity, we will soft close the issue. If you feel that it should remain open, please let us know. 😄