Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 14 widget extension crashes after fetching timeline

Tags:

ios

swift

widget

I'm implementing a widget extension which crashes randomly when the completion handles gets called. An exception is thrown "-[NSConcreteFileHandle fileDescriptor]: Invalid argument"

This is my implementation:

func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {

    let countArticles = self.countArticles(dependingOn: context.family)

    self.backendService.fetchArticles(countArticles: countArticles) { [weak self] (result) in

        let secondsUntilNextRefresh = TimeInterval(10 * 60)
        let dateToInvokeNextRefresh = Date().addingTimeInterval(secondsUntilNextRefresh)
        let timelineEntries = TimelineMapper().mapArticlesResultToTimelineEntry(result)
        let timeline = Timeline(entries: timelineEntries,
                                policy: .after(dateToInvokeNextRefresh))

        DispatchQueue.main.async {

            completion(timeline)
        }
    }
}

and stack trace

#0  0x00007fff20177f48 in objc_exception_throw ()
#1  0x00007fff2078b731 in _NSFileHandleRaiseOperationExceptionWhileReading ()
#2  0x00007fff2078adb1 in _NSFileHandleRaiseOperationException ()
#3  0x00007fff2078ada6 in -[NSConcreteFileHandle fileDescriptor] ()
#4  0x00007fff55c32ad4 in FileArchiveWriter.appendBytes(_:size:) ()
#5  0x00007fff55c32d06 in FileArchiveWriter.append<A>(_:) ()
#6  0x00007fff55c3222f in ArchiveWriter.addAttachment(data:) ()
#7  0x00007fff55c34086 in Encoder.encodeAttachedValue<A>(key:data:) ()
#8  0x00007fff55ff0a96 in CodableCGImage.encode(to:) ()
#9  0x00007fff55ff0eed in protocol witness for Encodable.encode(to:) in conformance CodableCGImage ()
#10 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#11 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#12 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#13 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#14 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#15 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#16 0x00007fff55a81c02 in GraphicsImage.encode(to:) ()
#17 0x00007fff55a826e9 in protocol witness for Encodable.encode(to:) in conformance GraphicsImage ()
#18 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#19 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#20 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#21 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#22 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#23 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#24 0x00007fff560b0669 in DisplayList.Content.Value.encode(to:) ()
#25 0x00007fff56005d6d in protocol witness for Encodable.encode(to:) in conformance DisplayList.Content.Value ()
#26 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#27 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#28 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#29 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#30 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#31 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#32 0x00007fff56006159 in DisplayList.Content.encode(to:) ()
#33 0x00007fff56006341 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Content ()
#34 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#35 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#36 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#37 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#38 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#39 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#40 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#41 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#42 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#43 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#44 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#45 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#46 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#47 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#48 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#49 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#50 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#51 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#52 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#53 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#54 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#55 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#56 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#57 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#58 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#59 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#60 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#61 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#62 0x00007fff560af15e in DisplayList.encode(to:) ()
#63 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#64 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#65 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#66 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#67 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#68 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#69 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#70 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#71 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#72 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#73 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#74 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#75 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#76 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#77 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#78 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#79 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#80 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#81 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#82 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#83 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#84 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#85 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#86 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#87 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#88 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#89 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#90 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#91 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#92 0x00007fff560af15e in DisplayList.encode(to:) ()
#93 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#94 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#95 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#96 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#97 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#98 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#99 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#100    0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#101    0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#102    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#103    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#104    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#105    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#106    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#107    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#108    0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#109    0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#110    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#111    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#112    0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#113    0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#114    0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#115    0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#116    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#117    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#118    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#119    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#120    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#121    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#122    0x00007fff560af15e in DisplayList.encode(to:) ()
#123    0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#124    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#125    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#126    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#127    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#128    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#129    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#130    0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#131    0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#132    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#133    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#134    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#135    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#136    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#137    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#138    0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#139    0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#140    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#141    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#142    0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#143    0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#144    0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#145    0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#146    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#147    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#148    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#149    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#150    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#151    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#152    0x00007fff560af15e in DisplayList.encode(to:) ()
#153    0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#154    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#155    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#156    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#157    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#158    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#159    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#160    0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#161    0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#162    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#163    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#164    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#165    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#166    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#167    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#168    0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#169    0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#170    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#171    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#172    0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#173    0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#174    0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#175    0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#176    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#177    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#178    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#179    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#180    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#181    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#182    0x00007fff560af15e in DisplayList.encode(to:) ()
#183    0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#184    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#185    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#186    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#187    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#188    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#189    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#190    0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#191    0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#192    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#193    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#194    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#195    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#196    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#197    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#198    0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#199    0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#200    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#201    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#202    0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#203    0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#204    0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#205    0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#206    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#207    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#208    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#209    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#210    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#211    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#212    0x00007fff560af15e in DisplayList.encode(to:) ()
#213    0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#214    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#215    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#216    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#217    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#218    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#219    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#220    0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#221    0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#222    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#223    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#224    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#225    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#226    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#227    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#228    0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#229    0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#230    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#231    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#232    0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#233    0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#234    0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#235    0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#236    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#237    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#238    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#239    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#240    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#241    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#242    0x00007fff560af15e in DisplayList.encode(to:) ()
#243    0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#244    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#245    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#246    0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#247    0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#248    0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#249    0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#250    0x00007fff55884a07 in _ArchivedViewStates.State.encode(to:) ()
#251    0x00007fff55884c0d in protocol witness for Encodable.encode(to:) in conformance _ArchivedViewStates.State ()
#252    0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#253    0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#254    0x00007fff536a0661 in PropertyListEncoder.encode<A>(_:) ()
#255    0x00007fff536b7a2e in dispatch thunk of PropertyListEncoder.encode<A>(_:) ()
#256    0x00007fff55bcbd3b in closure #1 in _ArchivedViewHost.archiveStates(to:count:body:) ()
#257    0x00007fff55bcb694 in _ArchivedViewHost.archiveStates(to:count:body:) ()
#258    0x00007fff55bcbf2d in _ArchivedViewHost.archiveStates(to:count:body:) ()
#259    0x00007fff56d053f0 in ___lldb_unnamed_symbol1790$$WidgetKit ()
#260    0x00007fff56d29189 in ___lldb_unnamed_symbol2908$$WidgetKit ()
#261    0x00007fff56d31189 in ___lldb_unnamed_symbol2990$$WidgetKit ()
#262    0x00007fff56d311c1 in ___lldb_unnamed_symbol2992$$WidgetKit ()
#263    0x00007fff56cee869 in ___lldb_unnamed_symbol918$$WidgetKit ()
#264    0x00007fff56cee148 in ___lldb_unnamed_symbol915$$WidgetKit ()
#265    0x00007fff56cee669 in ___lldb_unnamed_symbol917$$WidgetKit ()
#266    0x000000010eec48ab in closure #2 in closure #1 in ArticleTimelineProvider.getTimeline(in:completion:) at /Users/raimar/Xcode/faz-.net-ios/FAZ_NET/WidgetExtension/Models/ArticleTimelineProvider.swift:76
#267    0x000000010eec48f0 in thunk for @escaping @callee_guaranteed () -> () ()
#268    0x00007fff2010535b in _dispatch_call_block_and_release ()
#269    0x00007fff20106534 in _dispatch_client_callout ()
#270    0x00007fff20113011 in _dispatch_main_queue_callback_4CF ()
#271    0x00007fff203a8276 in __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ ()
#272    0x00007fff203a2b06 in __CFRunLoopRun ()
#273    0x00007fff203a1b9e in CFRunLoopRunSpecific ()
#274    0x00007fff20846e61 in -[NSRunLoop(NSRunLoop) runMode:beforeDate:] ()
#275    0x00007fff20847075 in -[NSRunLoop(NSRunLoop) run] ()
#276    0x00007fff2005d506 in _xpc_objc_main ()
#277    0x00007fff2005f4aa in xpc_main ()
#278    0x00007fff2094ecc6 in -[NSXPCListener resume] ()
#279    0x00007fff2f07aaaf in ___lldb_unnamed_symbol402$$PlugInKit ()
#280    0x00007fff2f07a747 in ___lldb_unnamed_symbol398$$PlugInKit ()
#281    0x00007fff2f07ae75 in ___lldb_unnamed_symbol406$$PlugInKit ()
#282    0x00007fff5818b8f3 in EXExtensionMain ()
#283    0x00007fff2088c079 in NSExtensionMain ()
#284    0x00007fff20257415 in start ()
like image 333
RTasche Avatar asked Sep 14 '20 10:09

RTasche


3 Answers

Could it be, that you call the completion function twice?

I had the same issue with a very similar stack trace.

One possible problem I can see with your code could be, calling self?.updateTimeline(with: timeline) as well as completion(timeline).

like image 114
Melvin Avatar answered Oct 03 '22 14:10

Melvin


My problem was that completion was called twice. Put a breakpoint where you call completion to check if it's called more than once.

like image 3
Emma Labbé Avatar answered Nov 17 '22 05:11

Emma Labbé


I found one issue in my BackendService implementation. In order to make sure that for two or multiple subsequent calls to getTimeline() only one request is invoked I kind of queued the completion handlers. This made sure that all completion handlers were called after the request finished. I never noticed any problems because the number of calls to getTimeline() always matched the number of completion handler calls when debugging. The crashes must have occurred when the timeline was reloaded after dateToInvokeNextRefresh passed because in that case the actual completion handler passed to getTimeline() and the previously queued completion handlers have been invoked. Making sure that all completion handlers are released after the request has finished solved the problem for me and crashes are gone now.

Another thing to mention is that the crash might also be related to custom fonts. I found this post iOS 14 Widget is flickering or frozen, chronod crashing describing a crash stack trace which is similar to mine.

like image 3
RTasche Avatar answered Nov 17 '22 03:11

RTasche