segmentio/analytics-swift

Outlined consume of Settings crash

DamonFish opened this issue · 3 comments

Describe the bug

Firebase reported the crash.

Environment

  1. iOS version: 16.4.0
  2. Devices affected: iPhone 13
  3. SDK Version: 1.4.5

I checked out the new version 1.4.7 and don't think this has been fixed.
Please correct me if I'm wrong.

Screenshots

image

Crashed: com.apple.NSURLSession-delegate
0  libsystem_kernel.dylib         0x7558 __pthread_kill + 8
1  libsystem_pthread.dylib        0x7118 pthread_kill + 268
2  libsystem_c.dylib              0x1d178 abort + 180
3  libsystem_malloc.dylib         0x1e0e4 malloc_vreport + 908
4  libsystem_malloc.dylib         0x1e38c malloc_zone_error + 104
5  libsystem_malloc.dylib         0x11a38 _szone_free + 480
6  CoreFoundation                 0x7d478 _CFRelease + 1392
7  libswiftCore.dylib             0x3adac8 swift_arrayDestroy + 124
8  libswiftCore.dylib             0xc8a08 _DictionaryStorage.deinit + 268
9  libswiftCore.dylib             0xc8b3c _DictionaryStorage.__deallocating_deinit + 16
10 libswiftCore.dylib             0x3bde28 _swift_release_dealloc + 56
11 libswiftCore.dylib             0x3bec4c bool swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::doDecrementSlow<(swift::PerformDeinit)1>(swift::RefCountBitsT<(swift::RefCountInlinedness)1>, unsigned int) + 132
12 libswiftCore.dylib             0x3adac8 swift_arrayDestroy + 124
13 libswiftCore.dylib             0xc8ad0 _DictionaryStorage.deinit + 468
14 libswiftCore.dylib             0xc8b3c _DictionaryStorage.__deallocating_deinit + 16
15 libswiftCore.dylib             0x3bde28 _swift_release_dealloc + 56
16 libswiftCore.dylib             0x3bec4c bool swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::doDecrementSlow<(swift::PerformDeinit)1>(swift::RefCountBitsT<(swift::RefCountInlinedness)1>, unsigned int) + 132
17 NeuronPubliciOS                0x3f3cf8 outlined consume of Settings? + 4342086904
18 NeuronPubliciOS                0x3f3bcc protocol witness for Plugin.update(settings:type:) in conformance DestinationMetadataPlugin + 20 (DestinationMetadataPlugin.swift:20)
19 NeuronPubliciOS                0x406338 partial apply for closure #1 in Analytics.update(plugin:settings:type:) + 4342162232
20 NeuronPubliciOS                0x3ed74c DestinationPlugin.apply(closure:) + 98 (Timeline.swift:98)
21 NeuronPubliciOS                0x404238 Analytics.update(settings:type:) + 115 (Settings.swift:115)
22 NeuronPubliciOS                0x404768 closure #2 in Analytics.checkSettings() + 157 (Settings.swift:157)
23 NeuronPubliciOS                0x423328 closure #1 in HTTPClient.settingsFor(writeKey:completion:) + 122 (HTTPClient.swift:122)
24 NeuronPubliciOS                0x3ff840 thunk for @escaping @callee_guaranteed @Sendable (@guaranteed Data?, @guaranteed NSURLResponse?, @guaranteed Error?) -> () + 4342134848 (<compiler-generated>:4342134848)
25 CFNetwork                      0x1f97c CFURLRequestSetMainDocumentURL + 2972
26 CFNetwork                      0x2f664 _CFNetworkErrorCopyLocalizedDescriptionWithHostname + 13648
27 libdispatch.dylib              0x2320 _dispatch_call_block_and_release + 32
28 libdispatch.dylib              0x3eac _dispatch_client_callout + 20
29 libdispatch.dylib              0xb534 _dispatch_lane_serial_drain + 668
30 libdispatch.dylib              0xc0d8 _dispatch_lane_invoke + 436
31 libdispatch.dylib              0x16cdc _dispatch_workloop_worker_thread + 648
32 libsystem_pthread.dylib        0xddc _pthread_wqthread + 288
33 libsystem_pthread.dylib        0xb7c start_wqthread + 8

Additional context

Hi, guys.
Firebase has reported this issue several times.
Is it a concurrency issue?

By the way, I added a simple plugin to replace the default device id.
I don't think it should affect this issue.

Thank you!

bsneed commented

Does DestinationMetadataPlugin.swift belong to you?

No. It belongs to the segment.

bsneed commented

I can't reproduce this so I'm gonna need some more context. Please reopen this ticket if there's anything you can add.