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 ()
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)
.
My problem was that completion
was called twice. Put a breakpoint where you call completion
to check if it's called more than once.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With