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:
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:
Anyone have any thoughts/ideas/workarounds? Is this a known issue?
Thanks!
Sounds like you're not sharing the graphic instance but creating separate instances for each mapivew. On this, instead of doing a copy() of the original graphic, can you alloc/init a new one for the second mapview just to see if there might be some issues with deep copying.
Also Are any of the layer instances shared between the two mapviews? Or do they both have their own instances of the layers?
If you can provide a stripped down project that repros the problem it'll help us investigate.
Correct - I was creating copies of the graphics and adding those the second mapView. I tried what you described and it had no effect. I went one step further, and didn't add any graphics to the second mapView and still got the crash.
The maps don't share any layers at all and the second mapView is just a baseman and one graphics layer.
I'll try to get a stripped down example in a new project and see if I can reproduce. Thanks for the quick reply Divesh Goyal
I never found a solution to this one but after additional troubleshooting I was able to narrow it down to some unique circumstances. For whatever reason, when locationDisplay was enabled and the users location was off screen, the crash occurred when returning to my map view. I stripped out all layers but the basemap and the problem seemed to fix it self.
So I worked around this by disabling GPS when navigation away from the view controller and reenabling when the user returned (probably not a bad practice anyway). That sort of did the trick but I still have an occasionally crash likely and I'm assuming that is because of some race condition.
It's good enough for now but I might dig in some more in the future. Hope this helps anyone that runs into a similar issue.