Posts

Post not yet marked as solved
0 Replies
1.2k Views
Can anybody help me to interpret the following crash log from the iOS-Simulator?* thread #32, queue = 'com.apple.mapdisplay.dispatch.overlaytiledecodequeue', stop reason = signal SIGABRT * frame #0: 0x00007fff523bc7fa libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fff52466bc1 libsystem_pthread.dylib`pthread_kill + 432 frame #2: 0x00007fff5234ba5c libsystem_c.dylib`abort + 120 frame #3: 0x00007fff3b7b4f4b MTLSimDriver`sendXPCMessageWithReplySync(NSObject<OS_xpc_object>*, NSObject<OS_xpc_object>*) (.cold.1) + 75 frame #4: 0x00007fff3b79ce3a MTLSimDriver`sendXPCMessageWithReplySync(NSObject<OS_xpc_object>*, NSObject<OS_xpc_object>*) + 186 frame #5: 0x00007fff3b791b15 MTLSimDriver`dispatchOperationWihReply(NSObject<OS_xpc_object>*, NSObject<OS_dispatch_data>*, unsigned long long, void (NSObject<OS_xpc_object>*) block_pointer, void (void const*, unsigned long) block_pointer) + 134 frame #6: 0x00007fff3b7a8afc MTLSimDriver`-[MTLSimTexture replaceRegion:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:] + 564 frame #7: 0x00007fff3c7ed759 MetalTools`-[MTLDebugTexture replaceRegion:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:] + 258 frame #8: 0x00007fff494e52be VectorKit`ggl::MetalResourceManager::upload(ggl::Texture2DLoadItem const&, std::__1::shared_ptr<ggl::RenderTransaction> const&) + 778 frame #9: 0x00007fff494d5124 VectorKit`ggl::MetalResourceAccessor::load(ggl::Texture2DLoadItem&) + 34 frame #10: 0x00007fff49302b9f VectorKit`std::__1::__function::__func<generateTexture(std::__1::shared_ptr<ggl::TextureData2D> const&, VKSharedResources const*)::$_3, std::__1::allocator<generateTexture(std::__1::shared_ptr<ggl::TextureData2D> const&, VKSharedResources const*)::$_3>, void (ggl::ResourceAccessor*)>::operator()(ggl::ResourceAccessor*&&) + 59 frame #11: 0x00007fff494f5f7b VectorKit`ggl::MetalLoader::performWithAccessor(std::__1::function<void (ggl::ResourceAccessor*)> const&, std::__1::shared_ptr<ggl::RenderTransaction> const&) + 35 frame #12: 0x00007fff49300d0a VectorKit`_processOverlays(geo::MercatorTile const&, unsigned int, float, VKSharedResources const*, ggl::Loader&, std::__1::vector<geo::_retain_ptr<VKOverlay*, geo::_retain_objc, geo::_release_objc, geo::_hash_objc, geo::_equal_objc>, std::__1::allocator<geo::_retain_ptr<VKOverlay*, geo::_retain_objc, geo::_release_objc, geo::_hash_objc, geo::_equal_objc> > > const&, std::__1::vector<md::OverlayTileData::OverlayTileResource, std::__1::allocator<md::OverlayTileData::OverlayTileResource> >&, std::__1::shared_ptr<ggl::ConstantDataTyped<ggl::Tile::View> >) + 7825 frame #13: 0x00007fff492fece7 VectorKit`md::OverlayLayerDataSource::createLayerData(mdc::LayerDataRequestKey const&, geo::linear_map<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > >, std::__1::equal_to<unsigned short>, std::__1::allocator<std::__1::pair<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > > > >, std::__1::vector<std::__1::pair<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > > >, std::__1::allocator<std::__1::pair<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > > > > > > const&, long long) const + 423 frame #14: 0x00007fff49560558 VectorKit`mdc::LayerDataSource::updateLayerData(unsigned long, mdc::LayerDataRequestKey const&, geo::linear_map<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > >, std::__1::equal_to<unsigned short>, std::__1::allocator<std::__1::pair<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > > > >, std::__1::vector<std::__1::pair<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > > >, std::__1::allocator<std::__1::pair<unsigned short, std::__1::unordered_map<mdc::ResourceKey, std::__1::shared_ptr<mdc::Resource>, mdc::ResourceKeyHash, std::__1::equal_to<mdc::ResourceKey>, std::__1::allocator<std::__1::pair<mdc::ResourceKey const, std::__1::shared_ptr<mdc::Resource> > > > > > > > const&, long long) + 64 frame #15: 0x00007fff49564363 VectorKit`std::__1::__function::__func<mdc::LayerDataSource::processLayerDataRequests(mdc::ResourceManager*, geo::TaskGroup*, long long)::$_5, std::__1::allocator<mdc::LayerDataSource::processLayerDataRequests(mdc::ResourceManager*, geo::TaskGroup*, long long)::$_5>, void ()>::operator()() + 155 frame #16: 0x00007fff494d18d8 VectorKit`___ZN3geo9TaskQueue14queueAsyncTaskENSt3__110shared_ptrINS_4TaskEEEPU28objcproto17OS_dispatch_group8NSObject_block_invoke + 66 frame #17: 0x000000010cfb8dd4 libdispatch.dylib`_dispatch_call_block_and_release + 12 frame #18: 0x000000010cfb9d48 libdispatch.dylib`_dispatch_client_callout + 8 frame #19: 0x000000010cfc05ef libdispatch.dylib`_dispatch_lane_serial_drain + 788 frame #20: 0x000000010cfc11b5 libdispatch.dylib`_dispatch_lane_invoke + 476 frame #21: 0x000000010cfcca4e libdispatch.dylib`_dispatch_workloop_worker_thread + 719 frame #22: 0x00007fff524636fc libsystem_pthread.dylib`_pthread_wqthread + 290 frame #23: 0x00007fff52462827 libsystem_pthread.dylib`start_wqthread + 15I am trying to draw an overly onto a MKMapView in realtime using MKOverlayPathRenderer. The gesture recognizers for drawing will update the UIBezierpath of the overlay and then call the renderers invalidatePath method. The renderers createPath method will then create the path withself.path = [self.overlay.path CGPath];Here, the (atomic) self.overlay.path property is a subclass of UIBezierpath which I made in an attempt for thread safety. It simply encapsulates all of the relevant UIBezierpath methods into @synchronized blocks:-(void)moveToPoint:(CGPoint)point { @synchronized (self) { [super moveToPoint:point]; } }same for all the other UIBezierpath methods I use. Most of the time, everything works fine with this subclass, but sometimes it will still crash with the above crash log. Does anybody have an idea how to fix this problem?
Posted
by jan@dph.
Last updated
.