ReactiveCocoa / ReactiveSwift

Streams of values over time

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[__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?

Screenshot 2020-06-02 at 16 11 04

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. 😄