Esri_runtimecore crashes when using OSM Vector Basemap

2010
9
01-22-2021 10:42 AM
MichaelDavis3
Occasional Contributor III

I'm getting frequent crashes from one of our apps when using the ESRI OSM Vector basemap

https://www.arcgis.com/home/item.html?id=fae788aa91e54244b161b59725dcbb2a

Crashes typically occur when zooming in on areas with crowded/complicated features (eg.. building outlines in Honolulu).  I've tried this with both the online as well as an offline VTPK with similar results.

Apologies for the giant log dump, but I'm not quite clear where the crash is occurring in y'alls SDK:

ArcGIS
Esri_runtimecore::Geometry::Transformation_2D::multiply(Esri_runtimecore::Geometry::Transformation_2D const&, Esri_runtimecore::Geometry::Transformation_2D const&, Esri_runtimecore::Geometry::Transformation_2D&)
ArcGIS
Esri_runtimecore::Cim_rasterizer::Symbol_draw_helper::to_dev_transfo()
ArcGIS
Esri_runtimecore::Map_renderer::Draw_helper_base::Shape_helper::Shape_helper(Esri_runtimecore::Map_renderer::Draw_helper_base&, Esri_runtimecore::Geometry::Multi_path const&, Esri_runtimecore::Common::Color_RGBA const&)
ArcGIS
Esri_runtimecore::Map_renderer::Display_list_draw_helper::draw_solid_fill(Esri_runtimecore::Geometry::Multi_path const&, Esri_runtimecore::Common::Color_RGBA)
ArcGIS
Esri_runtimecore::Cim_rasterizer::Symbol_draw_helper::draw_layer_(std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Symbol_layer const> const&, std::__1::shared_ptr<Esri_runtimecore::Geometry::Geometry> const&)
ArcGIS
Esri_runtimecore::Cim_rasterizer::Symbol_draw_helper::draw_layers_(std::__1::vector<std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Symbol_layer>, std::__1::allocator<std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Symbol_layer> > > const&, std::__1::shared_ptr<Esri_runtimecore::Geometry::Geometry> const&)
ArcGIS
Esri_runtimecore::Cim_rasterizer::Symbol_draw_helper::draw_(std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Symbol> const&, std::__1::shared_ptr<Esri_runtimecore::Geometry::Geometry> const&)
ArcGIS
Esri_runtimecore::Cim_rasterizer::Symbol_draw_helper::draw(std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Symbol> const&, std::__1::shared_ptr<Esri_runtimecore::Geometry::Geometry> const&)
ArcGIS
Esri_runtimecore::Cim_rasterizer::Symbol_draw_helper::draw(std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Symbol> const&, std::__1::shared_ptr<Esri_runtimecore::Geometry::Geometry> const&, std::__1::shared_ptr<Esri_runtimecore::Cim_rasterizer::Overrides> const&)
ArcGIS
Esri_runtimecore::Map_renderer::Item_draw_queue::post_item(std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_layer::Item> const&)
ArcGIS
Esri_runtimecore::Map_renderer::Static_vector_layer::load_items_for_display_(Esri_runtimecore::Map_renderer::Canvas_layer::Item::Queue&, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_layer::Render_properties> const&, std::__1::vector<Esri_runtimecore::Geometry::Envelope_2D, std::__1::allocator<Esri_runtimecore::Geometry::Envelope_2D> > const&)
ArcGIS
Esri_runtimecore::Map_renderer::Canvas_renderer::draw_to_display_list_(std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Display_list> const&, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_layer> const&, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_layer::Render_properties> const&, bool)
ArcGIS
std::__1::__function::__func<Esri_runtimecore::Map_renderer::Canvas_drawable::add_draw_task_(std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_renderer::Draw_request> const&)::$_6, std::__1::allocator<Esri_runtimecore::Map_renderer::Canvas_drawable::add_draw_task_(std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_renderer::Draw_request> const&)::$_6>, void ()>::operator()()
ArcGIS
std::__1::__function::__func<pplx::details::_MakeVoidToUnitFunc(std::__1::function<void ()> const&)::$_2, std::__1::allocator<pplx::details::_MakeVoidToUnitFunc(std::__1::function<void ()> const&)::$_2>, unsigned char ()>::operator()()
ArcGIS
pplx::details::_PPLTaskHandle<unsigned char, pplx::task<unsigned char>::_InitialTaskHandle<void, Esri_runtimecore::Map_renderer::Canvas_drawable::add_draw_task_(std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Canvas_renderer::Draw_request> const&)::$_6, pplx::details::_TypeSelectorNoAsync>, pplx::details::_TaskProcHandle>::invoke() const
ArcGIS
pplx::details::_TaskProcHandle::_RunChoreBridge(void*)
ArcGIS
Esri_runtimecore::Common::Core_scheduler::bridge_proc_(void*)
ArcGIS
Esri_runtimecore::Common::Queued_thread::process_message_(std::__1::shared_ptr<Esri_runtimecore::Common::Message_queue::Message> const&)
ArcGIS
Esri_runtimecore::Common::Queued_thread::execute_()
ArcGIS
Esri_runtimecore::Common::Thread::thread_proc_(Esri_runtimecore::Common::Thread*)
ArcGIS
void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(Esri_runtimecore::Common::Thread*), Esri_runtimecore::Common::Thread*> >(void*)

 Is there something I can do to get additional debug information out of the SDK?

0 Kudos
9 Replies
MarkDostal
Esri Contributor

I'm sorry to hear you are having problems.  The crash dump is great and helps a lot.  Can you provide some additional info which will help us debug this?

- Runtime SDK version (100.9, 100.8, etc.)

- Xcode version

- Does the crash happen on simulator or device or both?

- iOS version the crash happens on?

- If on device, which model iPhone/iPad?

 

Thank you.

Mark

0 Kudos
MichaelDavis3
Occasional Contributor III

Sorry hit send a bit too quick before adding all that...

  • Runtime v100.8
  • Xcode 12.3
  • Crashes in simulator and in deployed app (crash dump is from an actual device)
  • iOS 14 
  • Crashes observed on iPhone 12 Pro and iPad Pro (11")

Attached a small video clip of the crash.  I'll try bumping to 100.9 and see if that helps.

MichaelDavis3
Occasional Contributor III

Switched to 100.9 and it's still happening.  Interestingly enough if I load the same basemap or VTPK into Field Maps I can't seem to crash it.

MarkDostal
Esri Contributor

Thanks for the additional info.  I was able to reproduce the crash locally with the map you sent in the simulator, but I got a different call stack.  I'll keep you posted on what I find out.

-Mark

0 Kudos
MichaelDavis3
Occasional Contributor III

Thanks for taking a look Mark - I think I'm actually seeing this one reported in a variety ways, I dug a little deeper into the AppCenter logs and it looks like this is the most frequent reported stack:

MAIN THREAD - CRASHED

libc++.1.dylib
std::__1::__shared_weak_count::lock()
ArcGIS
Esri_runtimecore::Rendering_engine::GPU_texture::~GPU_texture()
ArcGIS
std::__1::__shared_ptr_pointer<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk*, std::__1::default_delete<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk>, std::__1::allocator<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >::__on_zero_shared()
ArcGIS
std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk>::~shared_ptr()
ArcGIS
std::__1::__tree<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::__map_value_compare<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::less<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index>, true>, std::__1::allocator<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, void*>*)
ArcGIS
std::__1::__tree<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::__map_value_compare<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::less<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index>, true>, std::__1::allocator<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, void*>*)
ArcGIS
std::__1::__tree<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::__map_value_compare<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::less<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index>, true>, std::__1::allocator<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, void*>*)
ArcGIS
std::__1::__tree<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::__map_value_compare<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::less<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index>, true>, std::__1::allocator<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, void*>*)
ArcGIS
std::__1::__tree<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::__map_value_compare<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, std::__1::less<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index>, true>, std::__1::allocator<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<Esri_runtimecore::Map_renderer::Image_drawable::Chunk_index, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Image_drawable::Image_container::Chunk> >, void*>*)
ArcGIS
std::__1::__shared_ptr_emplace<Esri_runtimecore::Common::enable_make_shared<Esri_runtimecore::Map_renderer::Image_drawable::Image_container>, std::__1::allocator<Esri_runtimecore::Common::enable_make_shared<Esri_runtimecore::Map_renderer::Image_drawable::Image_container> > >::__on_zero_shared()
ArcGIS
Esri_runtimecore::Map_renderer::Image_drawable::draw_(Esri_runtimecore::Rendering_engine::Device*, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Display_properties>, float, Esri_runtimecore::Map_renderer::Chunk_set, Esri_runtimecore::Rendering_engine::GPU_frame_buffer_view const&)
ArcGIS
Esri_runtimecore::Map_renderer::Canvas_drawable::draw(std::__1::shared_ptr<Esri_runtimecore::Rendering_engine::Device> const&, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Drawable::Render_properties> const&, std::__1::shared_ptr<Esri_runtimecore::Map_renderer::Display_properties> const&)
ArcGIS
Esri_runtimecore::Map_renderer::Map::draw(std::__1::shared_ptr<Esri_runtimecore::Rendering_engine::Device> const&)
ArcGIS
Esri_runtimecore::Geo_views::Map_view::draw(Esri_runtimecore::Geo_views::Device&)
ArcGIS
RT_GeoView_draw
ArcGIS
-[RTCGeoView draw:error:] RTCGeoView.m:607
ArcGIS
-[AGSMetalGeoViewRenderer drawRequested] AGSMetalGeoViewRenderer.m:99
ArcGIS
-[AGSGeoView setRtcGeoView:] AGSGeoView.m:307
ArcGIS
drawRequestedHandler RTCGeoView.m:279
ArcGIS
_ZN16Esri_runtimecore6Common4SlotIFvRKNS_9Geo_views8Geo_viewEEE12target_modelIZNKS0_6SignalIS6_E7connectINSt3__18functionIFvPvEEEEEvSE_OT_EUlNS0_14Signal_contextIS6_EESI_DpOT0_E_E6invokeEPKvS5_
ArcGIS
Esri_runtimecore::Common::Signal_detail::Signal_base::notify_(Esri_runtimecore::Common::Function_ref<void (Esri_runtimecore::Common::Signal_detail::erased_target_base&)>) const
ArcGIS
Esri_runtimecore::Geo_views::Geo_view_draw_requested::draw_request_callback()
ArcGIS
Esri_runtimecore::Map_renderer::Map::on_pulse_()
ArcGIS
RT_GeoView_pulse
ArcGIS
-[RTCGeoView pulse:] RTCGeoView.m:784
ArcGIS
-[AGSMetalGeoViewRenderer drawInMTKView:] AGSMetalGeoViewRenderer.m:85
MetalKit
-[MTKView draw]
0 Kudos
MarkDostal
Esri Contributor

I have created an internal issue for this problem and have forwarded it on to the appropriate team.  I was able to reproduce the issue both in the Simulator and on a device, although it took me a minute or two of panning/zooming around Honolulu to get it to crash.  As of this time, I don't have a work-around for you, except to try a different base map.

 

Mark

MichaelDavis3
Occasional Contributor III

Thanks Mark - the area around Fort DeRusy has been pretty consistent in causing crashes for me.  It primarily happens when zooming in quickly.

My field crews aren't particularly bothered by the crashes... they just open the app back up and carry on, but it seemed worth mentioning.  We haven't seen crashes like this with any of the other vector basemaps.  Perhaps some bad geometry snuck through from OSM and is causing issues.

MarkDostal
Esri Contributor

Thank you, I will pass that on!

0 Kudos
DiveshGoyal
Esri Regular Contributor

We think we found the cause of this crash and have installed a fix. It should be available in the next release, update 11