I've run into a particular scenario that results in a crash with the following console output. I'm on the latest 10.2.5 SDK using Objective-C and iOS 9.3.1.
Frame_buffer_OGL::init_ FAILED to create_ FramebufferName
libc++abi.dylib: terminating with uncaught exception of type Esri_runtimecore::Common::Internal_error_exception: Internal error exception
Here's the general reproduction case:
- Create a view controller (MapViewController) that includes an AGSMapView and set the mapView touch delegate to self (the crash still occurs without ever setting the touchDelegate). The map view also includes a sketch layer, AGSFeatureTableLayer and a few graphics layers. We create one graphic and add it to the map which is our 'selection' but does not use the selection mechanism/API provided with graphics layer.
- The user clicks a button to open a second view controller (without interacting with the map) to display details about that selected graphic.
- The new view controller (DetailViewController) is pushed on the navigation stack. This new view controller is a UITableViewController and it's headerView is a small AGSMapView that includes a basemap and a copy of the selected graphic. User interaction is disabled for this new map view and we show it only to provide context to the user.
- The user clicks a barButtonItem to pop the DetailViewController and return to the MapViewController.
- The user taps the map. Crash.
I've done quite a bit of testing and the key to this seems to be that it only occurs when the user presents the DetailViewController before ever interacting with the mapView.
Some other notes:
- I tried setting the touchDelegate to nil before DetailViewController is pushed to the navigation stack and it did not make a difference.
- I tried it without ever setting the touchDelegate and it still crashed.
- If I attempt to pan the map instead of clicking, it works fine and future click events register without a crash.
Anyone have any thoughts/ideas/workarounds? Is this a known issue?